]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix an assert() in fts5 that could be true following an OOM or IO error in contentles...
authordrh <>
Mon, 20 Nov 2023 11:50:22 +0000 (11:50 +0000)
committerdrh <>
Mon, 20 Nov 2023 11:50:22 +0000 (11:50 +0000)
FossilOrigin-Name: 80a0bd7a692b7f08d0fddc5bc2a75e3c8146c54a08c19a70d0e1b6d0e1ac383e

ext/fts5/fts5_index.c
ext/fts5/test/fts5faultG.test
manifest
manifest.uuid

index c7c02cf6fe480eb40f9e0e8be6d276368c37a65f..7026c793f8e437949164b743e7dcffd571325c91 100644 (file)
@@ -5664,8 +5664,9 @@ int sqlite3Fts5IndexOptimize(Fts5Index *p){
 
   assert( p->rc==SQLITE_OK );
   fts5IndexFlush(p);
-  assert( p->nContentlessDelete==0 );
+  assert( p->rc!=SQLITE_OK || p->nContentlessDelete==0 );
   pStruct = fts5StructureRead(p);
+  assert( p->rc!=SQLITE_OK || pStruct!=0 );
   fts5StructureInvalidate(p);
 
   if( pStruct ){
index bdcc153ad2a99b1cec65472c2d6e9d7529b5f915..33a41dcb3813e7994c2e718b819df2e29680f96a 100644 (file)
@@ -46,5 +46,31 @@ do_faultsim_test 1 -faults oom* -prep {
   faultsim_test_result {0 {}}
 }
 
+reset_db
+do_execsql_test 2.0 {
+  CREATE VIRTUAL TABLE t1 USING fts5(a, content=, contentless_delete=1);
+  BEGIN;
+    INSERT INTO t1 VALUES('here''s some text');
+    INSERT INTO t1 VALUES('useful stuff, text');
+    INSERT INTO t1 VALUES('what would we do without text!'); 
+  COMMIT;
+}
+faultsim_save_and_close
+do_faultsim_test 2 -faults oom* -prep { 
+  faultsim_restore_and_reopen
+  execsql {
+    BEGIN;
+      DELETE FROM t1 WHERE rowid=2;
+  }
+} -body {
+  execsql {
+    INSERT INTO t1(t1) VALUES('optimize');
+  }
+} -test {
+  faultsim_integrity_check
+  faultsim_test_result {0 {}}
+}
+
+
 
 finish_test
index 21d978af3e6f4b5ac9ec4cf76ce4ba6d0f318674..b579a249583318a6a98e2e7ffd38c1b09c4070dd 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\stest\s5.0\sin\sshell1.test\sfor\sWindows.\s(A\sdouble-quote\swrapped\ssingle-quote\sneeds\sno\sfurther\streatment\sto\sbe\srecognized\sas\sa\ssingle\ssingle-quote.)
-D 2023-11-19T17:33:51.197
+C Fix\san\sassert()\sin\sfts5\sthat\scould\sbe\strue\sfollowing\san\sOOM\sor\sIO\serror\sin\scontentless-delete\smode.
+D 2023-11-20T11:50:22.648
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -96,7 +96,7 @@ F ext/fts5/fts5_buffer.c 3001fbabb585d6de52947b44b455235072b741038391f830d6b7292
 F ext/fts5/fts5_config.c 054359543566cbff1ba65a188330660a5457299513ac71c53b3a07d934c7b081
 F ext/fts5/fts5_expr.c bd3b81ce669c4104e34ffe66570af1999a317b142c15fccb112de9fb0caa57a6
 F ext/fts5/fts5_hash.c 076058f93327051952a752dc765df1acfe783eb11b419b30652aa1fc1f987902
-F ext/fts5/fts5_index.c 01b671fedd2189f6969385d96facc4c06d9c441f0f91d584386a62b724282f9f
+F ext/fts5/fts5_index.c b3a89f8b0a044c7e0d0048cc1acaee45c026327c51d38974d250c3c49e7398fa
 F ext/fts5/fts5_main.c a07ed863b8bd9e6fefb62db2fd40a3518eb30a5f7dcfda5be915dd2db45efa2f
 F ext/fts5/fts5_storage.c 5d10b9bdcce5b90656cad13c7d12ad4148677d4b9e3fca0481fca56d6601426d
 F ext/fts5/fts5_tcl.c b1445cbe69908c411df8084a10b2485500ac70a9c747cdc8cda175a3da59d8ae
@@ -169,7 +169,7 @@ F ext/fts5/test/fts5faultB.test d606bdb8e81aaeb6f41de3fc9fc7ae315733f0903fbff05c
 F ext/fts5/test/fts5faultD.test e7ed7895abfe6bc98a5e853826f6b74956e7ba7f594f1860bbf9e504b9647996
 F ext/fts5/test/fts5faultE.test 844586ce71dab4be85bb86880e87b624d089f851654cd22e4710c77eb8ce7075
 F ext/fts5/test/fts5faultF.test 4abef99f86e99d9f0c6460dd68c586a766b6b9f1f660ada55bf2e8266bd1bbc1
-F ext/fts5/test/fts5faultG.test 340e59d2c2c1c7c379224f3968ee8d09b0f64bf56c5194217d1ded887b9d47c4
+F ext/fts5/test/fts5faultG.test d2e5a4d9a34e08dcaadcaeafef74d10cbc2abdd11aa2659a18af0294bf2812d3
 F ext/fts5/test/fts5first.test 3fcf2365c00a15fc9704233674789a3b95131d12de18a9b996159f6909dc8079
 F ext/fts5/test/fts5full.test e1701a112354e0ff9a1fdffb0c940c576530c33732ee20ac5e8361777070d717
 F ext/fts5/test/fts5fuzz1.test 238d8c45f3b81342aa384de3e581ff2fa330bf922a7b69e484bbc06051a1080e
@@ -2141,8 +2141,9 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P f782054e7ccdfb421a73acde6994f5046b99884924a508316a0d4a0dc9b03318
-R 11d2bcc161a0975aa5cf4d6ce76505d3
-U larrybr
-Z 2a234c2eb86a6d8b0395f3285359f0b0
+P aaa73400c41f382bbbd4ea32ad196d271c7a5e800bfee9afd998037a14fc89b9
+Q +3fe89238c31ca163d021ef1fecde594328815aaba7053fef9e9c789562a62f45
+R 7eab46c2629895186b94c5840eb7f8b3
+U drh
+Z 49328a82987c43a40ab76377345d6b65
 # Remove this line to create a well-formed Fossil manifest.
index 44044393acccb53f3dde12b816109087393d0cf6..6cd342d39428ec5c30a1aea0add1d868758ffed7 100644 (file)
@@ -1 +1 @@
-aaa73400c41f382bbbd4ea32ad196d271c7a5e800bfee9afd998037a14fc89b9
\ No newline at end of file
+80a0bd7a692b7f08d0fddc5bc2a75e3c8146c54a08c19a70d0e1b6d0e1ac383e
\ No newline at end of file