]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Correctly handle strings with zero-length tokens in the FTS3 offsets()
authordrh <drh@noemail.net>
Fri, 26 Mar 2010 17:40:32 +0000 (17:40 +0000)
committerdrh <drh@noemail.net>
Fri, 26 Mar 2010 17:40:32 +0000 (17:40 +0000)
function.  This is a cherrypick of [d37034f7fc].

FossilOrigin-Name: ff6ae4f0e461fb5f8d08a0092488b7cd71cffb05

ext/fts3/fts3_snippet.c
manifest
manifest.uuid
test/fts3ac.test

index d78d19856adb933b82e1b2a9a6083be8109d79be..7aa86607db0f2a924383606bc5dbc2bffc8f9339 100644 (file)
@@ -1156,11 +1156,13 @@ void sqlite3Fts3Offsets(
               "%d %d %d %d ", iCol, pTerm-sCtx.aTerm, iStart, iEnd-iStart
           );
           rc = fts3StringAppend(&res, aBuffer, -1);
+        }else if( rc==SQLITE_DONE ){
+          rc = SQLITE_CORRUPT;
         }
       }
     }
     if( rc==SQLITE_DONE ){
-      rc = SQLITE_CORRUPT;
+      rc = SQLITE_OK;
     }
 
     pMod->xClose(pC);
index e9801715b8abf9a56f027eeadec9ef964d4e55d3..ea79ac6e617a151d6cce2c4c84219f4377e7b88b 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,8 +1,8 @@
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
-C After\sany\srollback\sthat\smodifies\sthe\sdatabase\sfile,\ssync\sthe\sdatabase\nbefore\sdeleting\sthe\srollback\sjournal.\s\sThis\sis\sa\scherry-pick\smerge\nof\scheck-ins\s[b21b911f23]\sand\s[f2326dad4e]
-D 2010-03-26T17:37:12
+C Correctly\shandle\sstrings\swith\szero-length\stokens\sin\sthe\sFTS3\soffsets()\nfunction.\s\sThis\sis\sa\scherrypick\sof\s[d37034f7fc].
+D 2010-03-26T17:40:32
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in 4f2f967b7e58a35bb74fb7ec8ae90e0f4ca7868b
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -67,7 +67,7 @@ F ext/fts3/fts3_hash.c 3c8f6387a4a7f5305588b203fa7c887d753e1f1c
 F ext/fts3/fts3_hash.h 8331fb2206c609f9fc4c4735b9ab5ad6137c88ec
 F ext/fts3/fts3_icu.c ac494aed69835008185299315403044664bda295
 F ext/fts3/fts3_porter.c 7546e4503e286a67fd4f2a82159620e3e9c7a1bc
-F ext/fts3/fts3_snippet.c 9cb2e78f4d09f30ea7861ee3fc9b7221ae948c8e
+F ext/fts3/fts3_snippet.c 538bd27a76e465cb4ef6bfcb5479d897e4d5a536
 F ext/fts3/fts3_tokenizer.c 1a49ee3d79cbf0b9386250370d9cbfe4bb89c8ff
 F ext/fts3/fts3_tokenizer.h 13ffd9fcb397fec32a05ef5cd9e0fa659bf3dbd3
 F ext/fts3/fts3_tokenizer1.c b6d86d1d750787db5c168c73da4e87670ed890a1
@@ -387,7 +387,7 @@ F test/fts3.test ae0433b09b12def08105640e57693726c4949338
 F test/fts3_common.tcl 1d887ded06dac9b993cfb175618df7f70c796de2
 F test/fts3aa.test 5327d4c1d9b6c61021696746cc9a6cdc5bf159c0
 F test/fts3ab.test 09aeaa162aee6513d9ff336b6932211008b9d1f9
-F test/fts3ac.test fc1ac42c33f8a66d48ae41e4728f7ca4b6dfc950
+F test/fts3ac.test 636ed7486043055d4f126a0e385f2d5a82ebbf63
 F test/fts3ad.test e40570cb6f74f059129ad48bcef3d7cbc20dda49
 F test/fts3ae.test ce32a13b34b0260928e4213b4481acf801533bda
 F test/fts3af.test d394978c534eabf22dd0837e718b913fd66b499c
@@ -795,19 +795,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P 4ae453ea7be69018d8c16eb8dabe05617397dc4d
-R 8820f51193049a6809823c77f7f14764
-T *bgcolor * #00b0f0
-T *branch * branch-3.6.23
-T *sym-branch-3.6.23 *
-T -sym-release *
-T -sym-trunk *
+P ca0bc2a22e893062876f67e0f53cbab44b45665d
+R 24b9fa5b514ad48fc1f4636dc645593b
 U drh
-Z 18d9817887835a3157ab3e9c1e686481
+Z 5c92d97f4565d701ec12e576ffb6b46b
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.6 (GNU/Linux)
 
-iD8DBQFLrPDNoxKgR168RlERAjkcAJ43abOs8/wslEIJk5Gx+jWDGbxTlACeNJlr
-dStHAb91KgzPsmZ4TTunvXU=
-=J280
+iD8DBQFLrPGToxKgR168RlERAkgmAJ0dIHzOOhFP1kPKfD8nXNpZ4LY0GQCfWVg1
+pHKKMY8ZMGN1beehZi5RipY=
+=n0TY
 -----END PGP SIGNATURE-----
index 8d91b794abe9c1df5eef2b349b0426cd84b9e96f..df260148f5d465496124e195d247661a7db0f2df 100644 (file)
@@ -1 +1 @@
-ca0bc2a22e893062876f67e0f53cbab44b45665d
\ No newline at end of file
+ff6ae4f0e461fb5f8d08a0092488b7cd71cffb05
\ No newline at end of file
index 34abce44da9758513933b4a65ed7259f4852a0d2..84da924b6e8aee8613e17c842ffd1b68646f1ceb 100644 (file)
@@ -1198,4 +1198,22 @@ do_test fts3ac-5.2 {
 15 <b>Questar</b> Pipeline
 40 Rockies<b>...</b>}}
 
+#-------------------------------------------------------------------------
+# Test a problem reported on the mailing list.
+#
+do_test fts3ac-6.1 {
+  execsql {
+    CREATE VIRTUAL TABLE ft USING fts3(one, two);
+    INSERT INTO ft VALUES('', 'foo');
+    INSERT INTO ft VALUES('foo', 'foo');
+    SELECT offsets(ft) FROM ft WHERE ft MATCH 'foo';
+  }
+} {{1 0 0 3} {0 0 0 3 1 0 0 3}}
+do_test fts3ac-6.2 {
+  execsql {
+    DELETE FROM ft WHERE one = 'foo';
+    SELECT offsets(ft) FROM ft WHERE ft MATCH 'foo';
+  }
+} {{1 0 0 3}}
+
 finish_test