]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Enhancements to the "randomjson.c" extension. Automatically load that extension
authordrh <>
Sun, 17 Dec 2023 20:41:48 +0000 (20:41 +0000)
committerdrh <>
Sun, 17 Dec 2023 20:41:48 +0000 (20:41 +0000)
into fuzzcheck.

FossilOrigin-Name: 70620405ab01d6a5d38bafa9ae175fd6e4eabaf2efb7854734278dafd7b05c99

Makefile.in
Makefile.msc
ext/misc/randomjson.c
main.mk
manifest
manifest.uuid
test/fuzzcheck.c

index 51942533799c59a40fbc9fd8fe1ba3ac217c4982..a461685bf2caddbda7515eaf5e4c739127c534df 100644 (file)
@@ -632,7 +632,8 @@ FUZZCHECK_OPT += \
   -DSQLITE_OMIT_LOAD_EXTENSION \
   -DSQLITE_PRINTF_PRECISION_LIMIT=1000 \
   -DSQLITE_PRIVATE="" \
-  -DSQLITE_STRICT_SUBTYPE=1
+  -DSQLITE_STRICT_SUBTYPE=1 \
+  -DSQLITE_STATIC_RANDOMJSON
 
 FUZZCHECK_SRC += $(TOP)/test/fuzzcheck.c
 FUZZCHECK_SRC += $(TOP)/test/ossfuzz.c
@@ -640,6 +641,7 @@ FUZZCHECK_SRC += $(TOP)/test/fuzzinvariants.c
 FUZZCHECK_SRC += $(TOP)/ext/recover/dbdata.c
 FUZZCHECK_SRC += $(TOP)/ext/recover/sqlite3recover.c
 FUZZCHECK_SRC += $(TOP)/test/vt02.c
+FUZZCHECK_SRC += $(TOP)/ext/misc/randomjson.c
 DBFUZZ_OPT =
 ST_OPT = -DSQLITE_OS_KV_OPTIONAL
 
index 0e4a3f4845fb9f350ccdd9004cc6aa97f590642e..81ee6bb56171fa9d93f92ce10540baee0a77cab5 100644 (file)
@@ -1730,6 +1730,7 @@ FUZZCHECK_OPTS = $(FUZZCHECK_OPTS) -DSQLITE_OMIT_LOAD_EXTENSION
 FUZZCHECK_OPTS = $(FUZZCHECK_OPTS) -DSQLITE_PRINTF_PRECISION_LIMIT=1000
 FUZZCHECK_OPTS = $(FUZZCHECK_OPTS) -DSQLITE_PRIVATE=""
 FUZZCHECK_OPTS = $(FUZZCHECK_OPTS) -DSQLITE_STRICT_SUBTYPE=1
+FUZZCHECK_OPTS = $(FUZZCHECK_OPTS) -DSQLITE_STATIC_RANDOMJSON
 
 FUZZCHECK_OPTS = $(FUZZCHECK_OPTS) -DSQLITE_MAX_MEMORY=50000000
 FUZZCHECK_OPTS = $(FUZZCHECK_OPTS) -DSQLITE_PRINTF_PRECISION_LIMIT=1000
@@ -1746,6 +1747,7 @@ FUZZCHECK_SRC = $(FUZZCHECK_SRC) $(TOP)\test\fuzzinvariants.c
 FUZZCHECK_SRC = $(FUZZCHECK_SRC) $(TOP)\test\vt02.c
 FUZZCHECK_SRC = $(FUZZCHECK_SRC) $(TOP)\ext\recover\dbdata.c
 FUZZCHECK_SRC = $(FUZZCHECK_SRC) $(TOP)\ext\recover\sqlite3recover.c
+FUZZCHECK_SRC = $(FUZZCHECK_SRC) $(TOP)\ext\misc\randomjson.c
 
 OSSSHELL_SRC = $(TOP)\test\ossshell.c $(TOP)\test\ossfuzz.c
 DBFUZZ_COMPILE_OPTS = -DSQLITE_THREADSAFE=0 -DSQLITE_OMIT_LOAD_EXTENSION
index 3a6f545fe6ecca4214e5b200c04778e8a82b2325..a44905ca88ea071c754510180ce00ccccecf08e1 100644 (file)
 **     .load ./randomjson
 **     SELECT random_json(1);
 */
-#include "sqlite3ext.h"
-SQLITE_EXTENSION_INIT1
+#ifdef SQLITE_STATIC_RANDOMJSON
+#  include "sqlite3.h"
+#else
+#  include "sqlite3ext.h"
+   SQLITE_EXTENSION_INIT1
+#endif
 #include <assert.h>
 #include <string.h>
 #include <stdlib.h>
@@ -52,7 +56,7 @@ static unsigned int prngInt(Prng *p){
 }
 
 static const char *azJsonAtoms[] = {
-  /* JSON                    /* JSON-5 */
+  /* JSON                    JSON-5 */
   "0",                       "0",
   "1",                       "1",
   "-1",                      "-1",
@@ -95,13 +99,13 @@ static const char *azJsonTemplate[] = {
   /* JSON                                      JSON-5 */
   "{\"a\":%,\"b\":%,\"c\":%}",                 "{a:%,b:%,c:%}",
   "{\"a\":%,\"b\":%,\"c\":%,\"d\":%,\"e\":%}", "{a:%,b:%,c:%,d:%,e:%}",
-  "{\"a\":%,\"b\":%,\"c\":%,\"d\":%,\"\":%}",  "{a:%,b:%,c:%,d:%,\"\":%}",
+  "{\"a\":%,\"b\":%,\"c\":%,\"d\":%,\"\":%}",  "{a:%,b:%,c:%,d:%,'':%}",
   "{\"d\":%}",                                 "{d:%}",
   "{\"eeee\":%, \"ffff\":%}",                  "{eeee:% /*and*/, ffff:%}",
   "{\"$g\":%,\"_h_\":%}",                      "{$g:%,_h_:%,}",
   "{\"x\":%,\n  \"y\":%}",                     "{\"x\":%,\n  \"y\":%}",
-  "{\"a b c d\":%,\"e\":%,\"f\":%,\"x\":%,\"y\":%}",
-                                           "{\"a b c d\":%,e:%,f:%,x:%,y:%}",
+  "{\"a b c d\":%,\"e\":%,\"f\":%,\"\\u0078\":%,\"y\":%}",
+            "{\"a b c d\":%,\"\\x65\":%,\"\\u0066\":%,x:%,y:%}",
   "{\"Z\":%}",                                 "{Z:%,}",
   "[%]",                                       "[%,]",
   "[%,%]",                                     "[%,%]",
@@ -151,7 +155,7 @@ static void jsonExpand(
     n = strlen(z);
     if( j+n<STRSZ ){
       memcpy(&zDest[j], z, n);
-      j += n;
+      j += (int)n;
     }
   }
   zDest[STRSZ-1] = 0;
@@ -178,7 +182,7 @@ static void randJsonFunc(
 }
 
 #ifdef _WIN32
-__declspec(dllexport)
+  __declspec(dllexport)
 #endif
 int sqlite3_randomjson_init(
   sqlite3 *db, 
@@ -188,7 +192,11 @@ int sqlite3_randomjson_init(
   static int cOne = 1;
   static int cZero = 0;
   int rc = SQLITE_OK;
+#ifdef SQLITE_STATIC_RANDOMJSON
+  (void)pApi;      /* Unused parameter */
+#else
   SQLITE_EXTENSION_INIT2(pApi);
+#endif
   (void)pzErrMsg;  /* Unused parameter */
   rc = sqlite3_create_function(db, "random_json", 1,
                    SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
diff --git a/main.mk b/main.mk
index fdfdb752916f926cc503ae8a1a9ea60886a12366..f746b1bb67a74887426469b2624a0287497d2cde 100644 (file)
--- a/main.mk
+++ b/main.mk
@@ -526,12 +526,15 @@ FUZZCHECK_OPT += -DSQLITE_ENABLE_RTREE
 FUZZCHECK_OPT += -DSQLITE_ENABLE_GEOPOLY
 FUZZCHECK_OPT += -DSQLITE_ENABLE_DBSTAT_VTAB
 FUZZCHECK_OPT += -DSQLITE_ENABLE_BYTECODE_VTAB
+FUZZCHECK_OPT += -DSQLITE_STRICT_SUBTYPE=1
+FUZZCHECK_OPT += -DSQLITE_STATIC_RANDOMJSON
 FUZZSRC += $(TOP)/test/fuzzcheck.c
 FUZZSRC += $(TOP)/test/ossfuzz.c
 FUZZSRC += $(TOP)/test/vt02.c
 FUZZSRC += $(TOP)/test/fuzzinvariants.c
 FUZZSRC += $(TOP)/ext/recover/dbdata.c
 FUZZSRC += $(TOP)/ext/recover/sqlite3recover.c
+FUZZSRC += $(TOP)/ext/misc/randomjson.c
 DBFUZZ_OPT =
 KV_OPT = -DSQLITE_THREADSAFE=0 -DSQLITE_DIRECT_OVERFLOW_READ
 ST_OPT = -DSQLITE_THREADSAFE=0
index 8a8ef1942806e02e9d382d382c5476ac68013e7a..3a32d2c40db7890fea76c0144ef9471fe221f5fe 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,11 +1,11 @@
-C Enable\sSQLITE_STRICT_SUBTYPE\sfor\sdefault\sbuilds\sof\sthe\sshell,\sfuzzcheck,\nand\stestfixture.
-D 2023-12-16T15:48:42.762
+C Enhancements\sto\sthe\s"randomjson.c"\sextension.\s\sAutomatically\sload\sthat\sextension\ninto\sfuzzcheck.
+D 2023-12-17T20:41:48.102
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
-F Makefile.in c28e53bca825336006582531a2ae5b71de36839cab609d97de9a34991bb73a21
+F Makefile.in 8e458bac73ffdbd46bc486d243a9aebb589fca36c189bac7ae6c7a53c4013b22
 F Makefile.linux-gcc f3842a0b1efbfbb74ac0ef60e56b301836d05b4d867d014f714fa750048f1ab6
-F Makefile.msc a3b5113ad885bcdd67ff406b222dcf1ff78d2d449c1e0ba392c7477ff2db612c
+F Makefile.msc 2b563f70c18211698d9fc7720007cde52f37549e0802e172ae11d022ced3fcf8
 F README.md 6358805260a03ebead84e168bbf3740ddf3f683b477e478567186aa7afb490d3
 F VERSION 73573d4545343f001bf5dc5461173a7c78c203dd046cabcf99153878cf25d3a6
 F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
@@ -394,7 +394,7 @@ F ext/misc/pcachetrace.c f4227ce03fb16aa8d6f321b72dd051097419d7a028a9853af048bee
 F ext/misc/percentile.c b9086e223d583bdaf8cb73c98a6539d501a2fc4282654adbfea576453d82e691
 F ext/misc/prefixes.c 82645f79229877afab08c8b08ca1e7fa31921280906b90a61c294e4f540cd2a6
 F ext/misc/qpvtab.c fc189e127f68f791af90a487f4460ec91539a716daf45a0c357e963fd47cc06c
-F ext/misc/randomjson.c 7dd13664155319d47b9facc0d8dbf45e13062966a47168e54e3f26d48240d7ea
+F ext/misc/randomjson.c 0f467aa92dfec7d8bb100747f44e57e5549ab568bc7729eafc17ef96bf25589f
 F ext/misc/regexp.c 4bdd0045912f81c84908bd535ec5ad3b1c8540b4287c70ab84070963624047db
 F ext/misc/remember.c add730f0f7e7436cd15ea3fd6a90fd83c3f706ab44169f7f048438b7d6baa69c
 F ext/misc/rot13.c 51ac5f51e9d5fd811db58a9c23c628ad5f333c173f1fc53c8491a3603d38556c
@@ -656,7 +656,7 @@ F ext/wasm/wasmfs.make 8a4955882aaa0783b3f60a9484a1f0f3d8b6f775c0fcd17c082f31966
 F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895 x
 F ltmain.sh 3ff0879076df340d2e23ae905484d8c15d5fdea8
 F magic.txt 5ade0bc977aa135e79e3faaea894d5671b26107cc91e70783aa7dc83f22f3ba0
-F main.mk 51fd5fc8565007266e6bfd9e299199c752b171707a667b8914a204b38258e1b1
+F main.mk c6690ad32427ca98ba66e13a4747f3bcf644b2973e2a3a9d8921db7e163055a3
 F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271
 F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504
 F mptest/crash01.test 61e61469e257df0850df4293d7d4d6c2af301421
@@ -1230,7 +1230,7 @@ F test/fuzz3.test 9c813e6613b837cb7a277b0383cd66bfa07042b4cf0317157c35852f30043c
 F test/fuzz4.test c229bcdb45518a89e1d208a21343e061503460ac69fae1539320a89f572eb634
 F test/fuzz_common.tcl b7197de6ed1ee8250a4f82d67876f4561b42ee8cbbfc6160dcb66331bad3f830
 F test/fuzz_malloc.test f348276e732e814802e39f042b1f6da6362a610af73a528d8f76898fde6b22f2
-F test/fuzzcheck.c 442b0b02146bb905c47c4ee1388949e7fd9d27acf22d9535e9abf216e582b956
+F test/fuzzcheck.c 7e1bcc242dc4b42e43e4708c8140fe268db83a6901fbc681d150c77aa185e328
 F test/fuzzdata1.db 3e86d9cf5aea68ddb8e27c02d7dfdaa226347426c7eb814918e4d95475bf8517
 F test/fuzzdata2.db 128b3feeb78918d075c9b14b48610145a0dd4c8d6f1ca7c2870c7e425f5bf31f
 F test/fuzzdata3.db c6586d3e3cef0fbc18108f9bb649aa77bfc38aba
@@ -2154,8 +2154,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 2c7ef4b4d215f99f8d6787adb64e2037ae96e5dd6cb49c8b81634249f5e1b328
-R 6b3ef196e12f3df9aad084402f2a2931
+P 5a0c517ed7e46c0f8a3db752cf5b9f8010c60f35084606abe9e7c1c4f993b4a7
+R 27bdbb5e6b8c49c050a6d99d378352e9
 U drh
-Z 9f2e37a9158b0e1929ff27763f5e1a16
+Z 29254a4879856a31ff801b293e61b91e
 # Remove this line to create a well-formed Fossil manifest.
index 4df31e16b1ace7f86d233653af38041da5c7ee82..09fdefa9efaf78e22e6640b38966ac0c643605fb 100644 (file)
@@ -1 +1 @@
-5a0c517ed7e46c0f8a3db752cf5b9f8010c60f35084606abe9e7c1c4f993b4a7
\ No newline at end of file
+70620405ab01d6a5d38bafa9ae175fd6e4eabaf2efb7854734278dafd7b05c99
\ No newline at end of file
index d71335510d99be0750efb803686ad2d6aac3e280..dd49120115f1173eefc0150fe4896255323358cb 100644 (file)
@@ -159,9 +159,10 @@ static struct GlobalVars {
 } g;
 
 /*
-** Include the external vt02.c module.
+** Include the external vt02.c and randomjson.c modules.
 */
 extern int sqlite3_vt02_init(sqlite3*,char***,void*);
+extern int sqlite3_randomjson_init(sqlite3*,char***,void*);
 
 
 /*
@@ -1297,6 +1298,9 @@ int runCombinedDbSqlInput(
   /* Add the vt02 virtual table */
   sqlite3_vt02_init(cx.db, 0, 0);
 
+  /* Add the random_json() and random_json5() functions */
+  sqlite3_randomjson_init(cx.db, 0, 0);
+
   /* Add support for sqlite_dbdata and sqlite_dbptr virtual tables used
   ** by the recovery API */
   sqlite3_dbdata_init(cx.db, 0, 0);