From: drh <> Date: Wed, 14 Jun 2023 13:45:41 +0000 (+0000) Subject: Add SQLITE_DBCONFIG_RANDOM_SCANORDER. This option causes unconstrained table X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6291abd06dd35f4fbd18a9ca67d8401a2d9872a3;p=thirdparty%2Fsqlite.git Add SQLITE_DBCONFIG_RANDOM_SCANORDER. This option causes unconstrained table and index scan to happen in a random order, in order to help detect under-constrained queries in applications. FossilOrigin-Name: 330219863c4d9554843bd77a056a43a4c3265e6072b5006f6ac6a0c5103f5349 --- diff --git a/manifest b/manifest index 4f4560a756..fca3b34ec9 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Work\saround\swhat\sappears\sto\sbe\sa\sGCC\s32-bit\soptimization\sproblem\sin\sthe\ncomputeHMS()\sroutine\sof\sthe\sdate/time\slogic. -D 2023-06-14T12:19:07.968 +C Add\sSQLITE_DBCONFIG_RANDOM_SCANORDER.\s\sThis\soption\scauses\sunconstrained\stable\nand\sindex\sscan\sto\shappen\sin\sa\srandom\sorder,\sin\sorder\sto\shelp\sdetect\nunder-constrained\squeries\sin\sapplications. +D 2023-06-14T13:45:41.449 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -599,7 +599,7 @@ F src/insert.c a38bbb944a4f2771d70140db9c5d57e36c37e28d5a366497b4f93272a6d2567e F src/json.c 14c474fb1249a46eb44e878e2361f36abfe686b134039b0d1883d93d61505b4a F src/legacy.c d7874bc885906868cd51e6c2156698f2754f02d9eee1bae2d687323c3ca8e5aa F src/loadext.c 176d6b2cb18a6ad73b133db17f6fc351c4d9a2d510deebdb76c22bde9cfd1465 -F src/main.c 5fd4b65d61ae6155f36756ed508a39b38b49355b031188961e8d923f43f4bc49 +F src/main.c 50464e704e5abce2051fcd899fb0185c7eb1066ba79b8dc8fd1e96ac8b4fa7ec F src/malloc.c 47b82c5daad557d9b963e3873e99c22570fb470719082c6658bf64e3012f7d23 F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645 F src/mem1.c 3bb59158c38e05f6270e761a9f435bf19827a264c13d1631c58b84bdc96d73b2 @@ -637,11 +637,11 @@ F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c F src/resolve.c c1457b920aeb33ed106bf478fad31b7473a8950a755ea898980c428928f3a514 F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97 F src/select.c 383b9dba12493c365ee2036bcadd73013b7c0f7d2afcda0c378317c335d60ac2 -F src/shell.c.in 0c420738cf95292c394c2451281f76f2638c9234943805375974a20d2a5be8c3 -F src/sqlite.h.in 3076d78836b6dac53b3ab0875fc8fd15bca8077aad4d33c85336e05af6aef8c7 +F src/shell.c.in 87f5144038867d88d0d9957632bcfc311ae2cfb6696146bb0119c393f21a8943 +F src/sqlite.h.in c63ec595d928e22706bf13c8b397f3d2520d141b06e5c550c8cc705d2c564f87 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3ext.h da473ce2b3d0ae407a6300c4a164589b9a6bfdbec9462688a8593ff16f3bb6e4 -F src/sqliteInt.h 51409a4f9456865fe7b15a9c0563bcf193d52f8a1c4f7a951ee988160ed2654f +F src/sqliteInt.h 4381b76b160fdcc9d311293b3ffa9f9deffe792250f23932ddb77a9906b1423f F src/sqliteLimit.h 33b1c9baba578d34efe7dfdb43193b366111cdf41476b1e82699e14c11ee1fb6 F src/status.c 160c445d7d28c984a0eae38c144f6419311ed3eace59b44ac6dafc20db4af749 F src/table.c 0f141b58a16de7e2fbe81c308379e7279f4c6b50eb08efeec5892794a0ba30d1 @@ -705,7 +705,7 @@ F src/update.c 9fa127b8f13d39440996fdfa2323eeb1b565aba7b09ef820114ad2e77c25bdf1 F src/upsert.c 5303dc6c518fa7d4b280ec65170f465c7a70b7ac2b22491598f6d0b4875b3145 F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0 F src/util.c 6f9d2f278dcc8d41c618980cd3cfe88e1bafc0626209b917c6773d8202d29ef6 -F src/vacuum.c 604fcdaebe76f3497c855afcbf91b8fa5046b32de3045bab89cc008d68e40104 +F src/vacuum.c 4d77f708c01b9ff37f2e06f87dbdf3dee9fda9d3952a6af616459dafc324e03c F src/vdbe.c 6c0de640ef3be08cf2992d588a7501aee0f1003027bc952a6916a35f6e33b4cf F src/vdbe.h 41485521f68e9437fdb7ec4a90f9d86ab294e9bb8281e33b235915e29122cfc0 F src/vdbeInt.h 7bd49eef8f89c1a271fbf12d80a206bf56c876814c5fc6bee340f4e1907095ae @@ -721,7 +721,7 @@ F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9 F src/wal.c cbfeeb7415baa545efa244dd34bb5af4ae953a206fed720c6fa7f1ef763ec122 F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a F src/walker.c 1f1c4743e064873efff71509d8839d9f7509b8960699aa2eeb906dec41a0f667 -F src/where.c 2dc708cf8b6a691fb79f16bbc46567497ee6f991043318d421e294b2da114d93 +F src/where.c 234b8e24af578698344eb66ebee6e80931af1601b3fecdce41525ab107a67d4a F src/whereInt.h c7d19902863beadec1d04e66aca39c0bcd60b74f05f0eaa7422c7005dfc5d51a F src/wherecode.c bff0bc56cb1a382de266c2db3a691135c18a4360b6ad5e069e5c415d57eb0c38 F src/whereexpr.c f0a29594a2c143e10af7adf513b32d11223d76c6981c7f428433ec1ccbc33f84 @@ -2040,8 +2040,11 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 118fe600876686273f85d0a080a21267e83c11826365f3220336b1bd39562518 -R 636b0de7e817acb69f938b4ec83d6997 +P aebdbcbebff1319dd00551c9fb9ad4b08859f10e87f097295d564ae1ba188c02 +R 3abcf8fa676409a51ee8c9d184de47a1 +T *branch * random-scanorder +T *sym-random-scanorder * +T -sym-trunk * U drh -Z 5b8bcd505fc6af17eee1501e48c257a1 +Z 5d125949520e1ed38fd4e32024e865ec # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 6218540ec2..766b13de2e 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -aebdbcbebff1319dd00551c9fb9ad4b08859f10e87f097295d564ae1ba188c02 \ No newline at end of file +330219863c4d9554843bd77a056a43a4c3265e6072b5006f6ac6a0c5103f5349 \ No newline at end of file diff --git a/src/main.c b/src/main.c index 7e3fab8861..d93203fba3 100644 --- a/src/main.c +++ b/src/main.c @@ -960,6 +960,7 @@ int sqlite3_db_config(sqlite3 *db, int op, ...){ { SQLITE_DBCONFIG_TRUSTED_SCHEMA, SQLITE_TrustedSchema }, { SQLITE_DBCONFIG_STMT_SCANSTATUS, SQLITE_StmtScanStatus }, { SQLITE_DBCONFIG_REVERSE_SCANORDER, SQLITE_ReverseOrder }, + { SQLITE_DBCONFIG_RANDOM_SCANORDER, SQLITE_RandomOrder }, }; unsigned int i; rc = SQLITE_ERROR; /* IMP: R-42790-23372 */ diff --git a/src/shell.c.in b/src/shell.c.in index d02ec7fb9c..8739d96390 100644 --- a/src/shell.c.in +++ b/src/shell.c.in @@ -8278,6 +8278,7 @@ static int do_meta_command(char *zLine, ShellState *p){ { "legacy_file_format", SQLITE_DBCONFIG_LEGACY_FILE_FORMAT }, { "load_extension", SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION }, { "no_ckpt_on_close", SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE }, + { "random_scanorder", SQLITE_DBCONFIG_RANDOM_SCANORDER }, { "reset_database", SQLITE_DBCONFIG_RESET_DATABASE }, { "reverse_scanorder", SQLITE_DBCONFIG_REVERSE_SCANORDER }, { "stmt_scanstatus", SQLITE_DBCONFIG_STMT_SCANSTATUS }, diff --git a/src/sqlite.h.in b/src/sqlite.h.in index c5a50c01be..d5deb79d79 100644 --- a/src/sqlite.h.in +++ b/src/sqlite.h.in @@ -2488,6 +2488,25 @@ struct sqlite3_mem_methods { ** first argument. ** ** +** [[SQLITE_DBCONFIG_RANDOM_SCANORDER]] +**