]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Do not allow users to effectively disable fts5 crisismerge operations by setting...
authordan <dan@noemail.net>
Wed, 9 Oct 2019 18:36:32 +0000 (18:36 +0000)
committerdan <dan@noemail.net>
Wed, 9 Oct 2019 18:36:32 +0000 (18:36 +0000)
FossilOrigin-Name: 86e497209217abb7bcb491a023cd353f3c7c9c103ebd9f58dd8661b12cf3694c

ext/fts5/fts5Int.h
ext/fts5/fts5_config.c
ext/fts5/fts5_index.c
ext/fts5/test/fts5full.test
ext/fts5/test/fts5misc.test
manifest
manifest.uuid

index c29b42b7ad6b4ec59140fc69abc4bb5b317294db..8bc339de3b2a80bc26b403659f6dc0fbf0c0c5ff 100644 (file)
@@ -61,6 +61,11 @@ typedef sqlite3_uint64 u64;
 */
 #define FTS5_MAX_PREFIX_INDEXES 31
 
+/*
+** Maximum segments permitted in a single index 
+*/
+#define FTS5_MAX_SEGMENT 2000
+
 #define FTS5_DEFAULT_NEARDIST 10
 #define FTS5_DEFAULT_RANK     "bm25"
 
index 20da37913bef7544661b098ff3f5c74dce51470e..c02d67e7cb6be5298fb71adf40e1eb467788f5a2 100644 (file)
@@ -881,6 +881,7 @@ int sqlite3Fts5ConfigSetValue(
       *pbBadkey = 1;
     }else{
       if( nCrisisMerge<=1 ) nCrisisMerge = FTS5_DEFAULT_CRISISMERGE;
+      if( nCrisisMerge>=FTS5_MAX_SEGMENT ) nCrisisMerge = FTS5_MAX_SEGMENT-1;
       pConfig->nCrisisMerge = nCrisisMerge;
     }
   }
index 9b2cf0a52836a259a7d0874495f80e6c3d7ca1ac..5c1365a51eb4cec8d4f2b4c2216050fe1e0b1de4 100644 (file)
 #define FTS5_SEGMENT_ROWID(segid, pgno)       fts5_dri(segid, 0, 0, pgno)
 #define FTS5_DLIDX_ROWID(segid, height, pgno) fts5_dri(segid, 1, height, pgno)
 
-/*
-** Maximum segments permitted in a single index 
-*/
-#define FTS5_MAX_SEGMENT 2000
-
 #ifdef SQLITE_DEBUG
 int sqlite3Fts5Corrupt() { return SQLITE_CORRUPT_VTAB; }
 #endif
index 91ded37d8f9edc751620eeb4a211e5d4bb2d40dd..751e874c3b55a1c0b910250ff5711533151929a0 100644 (file)
@@ -36,7 +36,7 @@ do_test 1.1 {
       execsql { INSERT INTO x8 VALUES( rnddoc(5) ); }
     }
   } msg] $msg
-} {1 {database or disk is full}}
+} {0 {}}
 
 
 finish_test
index f8d5be584e6929d17b7f6b879f8452f84c3a1353..d4e55f0974ac92209a931daebb0fde09b6ca596e 100644 (file)
@@ -175,5 +175,23 @@ do_catchsql_test 5.3 {
   INSERT INTO vt0(vt0, rank) VALUES('pgsz', '65537');
 } {1 {SQL logic error}}
 
+#-------------------------------------------------------------------------
+# Ticket [d392017c].
+#
+reset_db
+do_execsql_test 6.0 {
+  CREATE VIRTUAL TABLE vt0 USING fts5(c0);
+  WITH s(i) AS (
+    SELECT 1 UNION ALL SELECT i+1 FROM s WHERE i<10000
+  )
+  INSERT INTO vt0(c0) SELECT '0' FROM s;
+  INSERT INTO vt0(vt0, rank) VALUES('crisismerge', 2000);
+  INSERT INTO vt0(vt0, rank) VALUES('automerge', 0);
+} {}
+
+do_execsql_test 6.1 {
+  INSERT INTO vt0(vt0) VALUES('rebuild');
+}
+
 finish_test
 
index 9503bdb2396912192de2177e53c95fea2a706a00..df2f0dca94b83a83e58ab7897adf5b23f20c1bed 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C An\simproved\sfix\sfor\sthe\sdbsqlfuzz-discovered\sALWAYS()\sfailure\sfollowing\sOOM\sin\nsqlite3ExprCollSeq().\s\sThis\stime\swith\sa\stest\scase\s(engineered\sby\sDan).
-D 2019-10-09T15:37:58.973
+C Do\snot\sallow\susers\sto\seffectively\sdisable\sfts5\scrisismerge\soperations\sby\ssetting\sthe\scrisismerge\sthreshold\sto\shigher\sthan\sthe\smaximum\sallowable\ssegment\sb-trees\son\sa\ssingle\slevel.\sFix\sfor\s[d392017c].
+D 2019-10-09T18:36:32.820
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -110,13 +110,13 @@ F ext/fts3/unicode/mkunicode.tcl bf7fcaa6d68e6d38223467983785d054f1cff4d9e3905dd
 F ext/fts3/unicode/parseunicode.tcl a981bd6466d12dd17967515801c3ff23f74a281be1a03cf1e6f52a6959fc77eb
 F ext/fts5/extract_api_docs.tcl a36e54ec777172ddd3f9a88daf593b00848368e0
 F ext/fts5/fts5.h 7c9da96f2b9dcfa4dd94081fb2d87ec418d8cdb35b25df56756c334b6b558fd7
-F ext/fts5/fts5Int.h 0ec19a906a54c0e53f8a380c0ff70f11a866aa259490bc13aa39f8d2491800fd
+F ext/fts5/fts5Int.h 3966afab063063ea9fcbf84ac386f3f094c99ade4452e529c0a0d56375d984c1
 F ext/fts5/fts5_aux.c dcc627d8b6e3fc773db528ff67b39955dab7b51628f9dba8e15849e5bedfd7fa
 F ext/fts5/fts5_buffer.c 5a5fe0159752c0fb0a5a93c722e9db2662822709490769d482b76a6dc8aaca70
-F ext/fts5/fts5_config.c e26c5e2dcb8f8244847e45cd68fa134764930a521823ba791004d9637a08ed7b
+F ext/fts5/fts5_config.c aab6117f8f85933e051c66f227414fdcaf7f2313688e16276b895f9d42d28e5c
 F ext/fts5/fts5_expr.c 5661fe64f4f5a499710df9561075de84b743f01e808af46df4130a9ec343a0fd
 F ext/fts5/fts5_hash.c 1cc0095646f5f3b46721aa112fb4f9bf29ae175cb5338f89dcec66ed97acfe75
-F ext/fts5/fts5_index.c 7fca0f89a93083d0e51513b990f9630ab13f94ed4131840a522f29768c230436
+F ext/fts5/fts5_index.c ce199410b2cd7d625c1da5b684a5c1fbcfe90f7a10bae18e2fbb051b9a2acbe5
 F ext/fts5/fts5_main.c bf637030722badf06667d28f7159e4c209dbafd7aa76c33f387104b78ad147e1
 F ext/fts5/fts5_storage.c 167e3d8f8052a71032d498e32a2f2ed5ffe489e5d4d47e298adfa02ed55c7882
 F ext/fts5/fts5_tcl.c 39bcbae507f594aad778172fa914cad0f585bf92fd3b078c686e249282db0d95
@@ -179,7 +179,7 @@ F ext/fts5/test/fts5faultA.test be4487576bff8c22cee6597d1893b312f306504a8c6ccd3c
 F ext/fts5/test/fts5faultB.test d606bdb8e81aaeb6f41de3fc9fc7ae315733f0903fbff05cf54f5b045b729ab5
 F ext/fts5/test/fts5faultD.test cc5d1225556e356615e719c612e845d41bff7d5a
 F ext/fts5/test/fts5first.test 3fcf2365c00a15fc9704233674789a3b95131d12de18a9b996159f6909dc8079
-F ext/fts5/test/fts5full.test 49b565da02918c06e58f51f0b953b0302b96f155aa68baba24782b81570685e2
+F ext/fts5/test/fts5full.test e1701a112354e0ff9a1fdffb0c940c576530c33732ee20ac5e8361777070d717
 F ext/fts5/test/fts5fuzz1.test 238d8c45f3b81342aa384de3e581ff2fa330bf922a7b69e484bbc06051a1080e
 F ext/fts5/test/fts5hash.test a4cf51acad99bfc43c16fb74f9d22495dc221ae0701fc5e908ca963a9b26a02b
 F ext/fts5/test/fts5integrity.test 4317561cd25eca7df16aa1f7d1a700ee958059fa639785f94aba0a84df9ab17b
@@ -189,7 +189,7 @@ F ext/fts5/test/fts5leftjoin.test c0b4cafb9661379e576dc4405c0891d8fcc27826807405
 F ext/fts5/test/fts5matchinfo.test 79129ff6c9a2d86943b287a5a8caa7ee639f6dcf004d8975d15c279374e82e35
 F ext/fts5/test/fts5merge.test e92a8db28b45931e7a9c7b1bbd36101692759d00274df74d83fd29d25d53b3a6
 F ext/fts5/test/fts5merge2.test 3ebad1a59d6ad3fb66eff6523a09e95dc6367cbefb3cd73196801dea0425c8e2
-F ext/fts5/test/fts5misc.test c00a1318bbb1bf28269592907925c1cd1be4252980749e9c552a71c91cf29e9c
+F ext/fts5/test/fts5misc.test f3edb5e6a370d6045f1b28979ee581a44e81d5f15d4e1779db3d3069914171fd
 F ext/fts5/test/fts5multi.test a15bc91cdb717492e6e1b66fec1c356cb57386b980c7ba5af1915f97fe878581
 F ext/fts5/test/fts5multiclient.test 5ff811c028d6108045ffef737f1e9f05028af2458e456c0937c1d1b8dea56d45
 F ext/fts5/test/fts5near.test 211477940142d733ac04fad97cb24095513ab2507073a99c2765c3ddd2ef58bd
@@ -1846,8 +1846,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 75775c5ab44e497cb19be10397229637f1374f05c3244e8f92d6c54fcea94f5f
-Q -01ba4641ab436c6065c8725908fc0913f2abded4ea62e004b7534e0116b9451a
-R 46052c64c579bf3fda5dd04a558500b4
-U drh
-Z cca2984ae5fcf8dec44abaa439367b12
+P 907f7965b335d8d5441f2e386bb190d1f93ffcd45ca98d2d1c621dede491fc5e
+R ff04baeec67f3b016fe79aecb67c0a3c
+U dan
+Z 317dae3e1b55b9ea127da4807cd56a16
index 7854b4d5cf649920e19f1111174db054b3476587..52e5001b7195a9b16f94b93d8af347788fedb313 100644 (file)
@@ -1 +1 @@
-907f7965b335d8d5441f2e386bb190d1f93ffcd45ca98d2d1c621dede491fc5e
\ No newline at end of file
+86e497209217abb7bcb491a023cd353f3c7c9c103ebd9f58dd8661b12cf3694c
\ No newline at end of file