]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a problem in the xFilter() method of the fts5_vocab virtual table causing it...
authordan <Dan Kennedy>
Fri, 28 Nov 2025 11:52:40 +0000 (11:52 +0000)
committerdan <Dan Kennedy>
Fri, 28 Nov 2025 11:52:40 +0000 (11:52 +0000)
FossilOrigin-Name: 6c99e81e6c49c078f1b00952774a7007c60dc1b4ba8a8fc11357efe9c9233212

ext/fts5/fts5_vocab.c
ext/fts5/test/fts5vocab2.test
manifest
manifest.uuid

index b157ab0d9732c09acab3cab966043c5e5c027955..3a6a968f7c0be18d99e2de094228608573d3ef54 100644 (file)
@@ -396,7 +396,12 @@ static int fts5VocabOpenMethod(
   return rc;
 }
 
+/*
+** Restore cursor pCsr to the state it was in immediately after being
+** created by the xOpen() method.
+*/
 static void fts5VocabResetCursor(Fts5VocabCursor *pCsr){
+  int nCol = pCsr->pFts5->pConfig->nCol;
   pCsr->rowid = 0;
   sqlite3Fts5IterClose(pCsr->pIter);
   sqlite3Fts5StructureRelease(pCsr->pStruct);
@@ -406,6 +411,12 @@ static void fts5VocabResetCursor(Fts5VocabCursor *pCsr){
   pCsr->nLeTerm = -1;
   pCsr->zLeTerm = 0;
   pCsr->bEof = 0;
+  pCsr->iCol = 0;
+  pCsr->iInstPos = 0;
+  pCsr->iInstOff = 0;
+  pCsr->colUsed = 0;
+  memset(pCsr->aCnt, 0, sizeof(i64)*nCol);
+  memset(pCsr->aDoc, 0, sizeof(i64)*nCol);
 }
 
 /*
index 7b3c3b0d6a975878e3f35e11a53e849f5be8fbe9..58416a7e904cecb2af1f68275f92f2a08f6dd67b 100644 (file)
@@ -305,6 +305,28 @@ do_catchsql_test 6.2 {
 
 sqlite3_fts5_may_be_corrupt 0
 
+#-------------------------------------------------------------------------
+reset_db
+do_execsql_test 7.0 {
+  CREATE VIRTUAL TABLE t1 USING fts5(a, b);
+  CREATE VIRTUAL TABLE v1 USING fts5vocab(t1, col);
+
+  INSERT INTO t1 VALUES('xx', 'xx');
+
+  CREATE TABLE x1(t);
+  INSERT INTO x1 VALUES('xx');
+  INSERT INTO x1 VALUES('xx');
+
+  SELECT term, col FROM v1;
+} {
+  xx a xx b
+}
+
+do_execsql_test 7.1 {
+  SELECT * FROM x1 WHERE 'a'=(SELECT col FROM v1 WHERE term=t)
+} {xx xx}
+
+
 finish_test
 
 
index 55bd664e5ce52b4d4071bee0adb2dd5c7db0c918..2dafdf30cd74eccee268495a929e80dec5fd12bc 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Rename\sc-pp::ARGV\sto\sc-pp::argv\sand\sremove\sits\suse\sfrom\sthe\slicense\sheader\s(where\sit\sdoesn't\sget\sapplied).
-D 2025-11-28T02:34:08.494
+C Fix\sa\sproblem\sin\sthe\sxFilter()\smethod\sof\sthe\sfts5_vocab\svirtual\stable\scausing\sit\sto\somit\ssome\sresult\srows\sin\ssome\scases\swhere\sa\svirtual\scursor\sis\sused\smore\sthan\sonce\sby\sSQLite.
+D 2025-11-28T11:52:40.502
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -122,7 +122,7 @@ F ext/fts5/fts5_test_tok.c 3cb0a9b508b30d17ef025ccddd26ae3dc8ddffbe76c057616e59a
 F ext/fts5/fts5_tokenize.c 49aea8cc400a690a6c4f83c4cedc67f4f8830c6789c4ee343404f62bcaebca7b
 F ext/fts5/fts5_unicode2.c 536a6dae41d16edadd6a6b58c56e2ebbb133f0dfe757562a2edbcdc9b8362e50
 F ext/fts5/fts5_varint.c e64d2113f6e1bfee0032972cffc1207b77af63319746951bf1d09885d1dadf80
-F ext/fts5/fts5_vocab.c ff0441c4ea165081e8152dec6d29056faa0cdc281a9f218a00e3d7aacc1958bc
+F ext/fts5/fts5_vocab.c 23e263ad94ac357cfffd19bd7e001c3f15c4420fb10fa35b5993142127e780e6
 F ext/fts5/fts5parse.y eb526940f892ade5693f22ffd6c4f2702543a9059942772526eac1fde256bb05
 F ext/fts5/mkportersteps.tcl 5acf962d2e0074f701620bb5308155fa1e4a63ba
 F ext/fts5/test/fts5_common.tcl c5aa7cf7148b6dcffb5b61520ae18212baf169936af734ab265143f59db328fe
@@ -269,7 +269,7 @@ F ext/fts5/test/fts5update.test b8affd796e45c94a4d19ad5c26606ea06065a0f162a9562d
 F ext/fts5/test/fts5update2.test c5baa76799ac605ebb8e5e21035db2014b396cef25c903eb96ba39b1d6f9f046
 F ext/fts5/test/fts5version.test 44ab35566267b7618c090443de2d9ad84f633df5d20bf72e9bad199ae5fced84
 F ext/fts5/test/fts5vocab.test 2a2bdb60d0998fa3124d541b6d30b019504918dc43a6584645b63a24be72f992
-F ext/fts5/test/fts5vocab2.test bbba149c254375d00055930c1a501c9a51e80b0d20bf7b98f3e9fa3b03786373
+F ext/fts5/test/fts5vocab2.test 4265137a3747b27deb1e2e2bde5654120c6de72bfed3238e67806d85af60fc4c
 F ext/fts5/tool/fts5speed.tcl b0056f91a55b2d1a3684ec05729de92b042e2f85
 F ext/fts5/tool/fts5txt2db.tcl c0d43c8590656f8240e622b00957b3a0facc49482411a9fdc2870b45c0c82f9f
 F ext/fts5/tool/loadfts5.tcl 95b03429ee6b138645703c6ca192c3ac96eaf093
@@ -2180,8 +2180,8 @@ F tool/version-info.c 33d0390ef484b3b1cb685d59362be891ea162123cea181cb8e6d2cf6dd
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh d924598cf2f55a4ecbc2aeb055c10bd5f48114793e7ba25f9585435da29e7e98
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 50eaf4266f184963e85ad6235fb3410bf4992db8b3dc7c92be23a2f143c12a6b
-R 637c8027bd027a5a2807b254caf9196b
-U stephan
-Z d5db7bb18724c4442e10418432b8ad5b
+P a2e18d299c8fd7360de246fdc3a2f92025bf321e06c5baf6032ba98854733e60
+R c3499f92c338fdae96f228fae1d6e255
+U dan
+Z 1449aad7ab8825e6212ab0e230be4498
 # Remove this line to create a well-formed Fossil manifest.
index af40149cc90ca579bb00305f04f67f2b2c159850..37ae7de872204a07e5a4eb40e4b88b9ffb5eaa41 100644 (file)
@@ -1 +1 @@
-a2e18d299c8fd7360de246fdc3a2f92025bf321e06c5baf6032ba98854733e60
+6c99e81e6c49c078f1b00952774a7007c60dc1b4ba8a8fc11357efe9c9233212