]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a broken assert() in the fts3 snippet code that was failing for queries containgi...
authordan <dan@noemail.net>
Wed, 21 Aug 2019 11:31:48 +0000 (11:31 +0000)
committerdan <dan@noemail.net>
Wed, 21 Aug 2019 11:31:48 +0000 (11:31 +0000)
FossilOrigin-Name: 4c01e0170e113ad052b6c3980beb4be9f1dc03fb3cf34132b90e8b82b23f654e

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

index d5ebda6a054f79fcbc9c1529fb035ac5ff388a1f..6db3fd7d961f3a5112f954576fb73f68a99807bb 100644 (file)
@@ -433,10 +433,10 @@ static void fts3SnippetDetails(
 
       while( iCsr<(iStart+pIter->nSnippet) && iCsr>=iStart ){
         int j;
-        u64 mPhrase = (u64)1 << i;
+        u64 mPhrase = (u64)1 << (i%64);
         u64 mPos = (u64)1 << (iCsr - iStart);
         assert( iCsr>=iStart && (iCsr - iStart)<=64 );
-        assert( i>=0 && i<=64 );
+        assert( i>=0 );
         if( (mCover|mCovered)&mPhrase ){
           iScore++;
         }else{
index cfd08c86b4f0063a944e4665c5a588e9aa8d714c..a7c984884342b01e28c90ebb1cbba39b2e60a3e9 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sa\sproblem\swith\sfts5\s"ORDER\sBY\srank"\squeries\swhen\sthe\sfts5\stable\sname\srequires\squoting.
-D 2019-08-20T19:11:29.544
+C Fix\sa\sbroken\sassert()\sin\sthe\sfts3\ssnippet\scode\sthat\swas\sfailing\sfor\squeries\scontainging\smore\sthan\s64\sphrases.
+D 2019-08-21T11:31:48.364
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -90,7 +90,7 @@ F ext/fts3/fts3_hash.c 8b6e31bfb0844c27dc6092c2620bdb1fca17ed613072db057d96952c6
 F ext/fts3/fts3_hash.h 39cf6874dc239d6b4e30479b1975fe5b22a3caaf
 F ext/fts3/fts3_icu.c 305ce7fb6036484085b5556a9c8e62acdc7763f0f4cdf5fd538212a9f3720116
 F ext/fts3/fts3_porter.c 3565faf04b626cddf85f03825e86056a4562c009
-F ext/fts3/fts3_snippet.c 2f3a78b990f1c8658225618c8a0fa06ab60046688d6fb627a548e8ada9011150
+F ext/fts3/fts3_snippet.c 7963dd25ec81013c31f3c61697d0a1f3d06be21af3565774645c08d3dedf1fa7
 F ext/fts3/fts3_term.c f45a1e7c6ef464abb1231245d123dae12266b69e05cc56e14045b76591ae92d1
 F ext/fts3/fts3_test.c 73b16e229e517c1b1f0fb8e1046182a4e5dbc8dbe6eea8a5d4353fcce7dbbf39
 F ext/fts3/fts3_tokenize_vtab.c 1de9a61acfa2a0445ed989310c31839c57f6b6086dd9d5c97177ae734a17fd8b
@@ -965,7 +965,7 @@ F test/fts3query.test ca033ff2ebcc22c69d89032fb0bc1850997d31e7e60ecd26440796ba16
 F test/fts3rank.test cd99bc83a3c923c8d52afd90d86979cf05fc41849f892faeac3988055ef37b99
 F test/fts3rnd.test 1320d8826a845e38a96e769562bf83d7a92a15d0
 F test/fts3shared.test 57e26a801f21027b7530da77db54286a6fe4997e
-F test/fts3snippet.test dace744104d1a44dc12dc9dd10b8d7542342df503d96942b7c4a55034e761789
+F test/fts3snippet.test 430bb5ace2b31ccd99de4d71775d956da832c114c4b3e39589748f114458647c
 F test/fts3sort.test ed34c716a11cc2009a35210e84ad5f9c102362ca
 F test/fts3tok1.test a663f4cac22a9505400bc22aacb818d7055240409c28729669ea7d4cc2120d15
 F test/fts3tok_err.test 52273cd193b9036282f7bacb43da78c6be87418d
@@ -1836,7 +1836,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 75aec4fc886c04fe098828cc03bc72c197cbf40f0a1890fe5bbb98d4fd5c3c7e
-R 1c1c766fc2c729d2e5f3a524114c00f7
+P 00e9a8f2730eb7239bf7fd107c97c409e4f9fbd968510766373440a9079898eb
+R 255eac821d14dded7de17c80283ba7c2
 U dan
-Z 8a025a4c149038423df368f1009cf0d8
+Z f165fea3d8f5943a2e39a213216b0a66
index 508e9fd6467e33230536d592eb1ce0ee54a53ea0..bc8cee914d0e7aea6f91e6f312d6c5f271b3d526 100644 (file)
@@ -1 +1 @@
-00e9a8f2730eb7239bf7fd107c97c409e4f9fbd968510766373440a9079898eb
\ No newline at end of file
+4c01e0170e113ad052b6c3980beb4be9f1dc03fb3cf34132b90e8b82b23f654e
\ No newline at end of file
index ebcdb8cffd3de583d3f696dfcf6a625160820880..976c8c849250a9c170a54dcf0d91c9a7d78c11d1 100644 (file)
@@ -561,7 +561,31 @@ do_test 4.3 {
   }]
 } {64}
 
+#-------------------------------------------------------------------------
+# Request a snippet from a query with more than 64 phrases.
+#
+do_execsql_test 5.0 {
+  CREATE VIRTUAL TABLE t5 USING fts3(x);
+  INSERT INTO t5 VALUES('a1 a2 a3');
+  INSERT INTO t5 VALUES('a4 a5 a6');
+  INSERT INTO t5 VALUES('a70 a71 a72');
+}
 
+do_execsql_test 5.1 {
+  SELECT snippet(t5, '[', ']') FROM t5 WHERE t5 MATCH 
+  'a1 OR a2 OR a3 OR a4 OR a5 OR a6 OR a7 OR a8 OR a9 OR a10 OR ' ||
+  'a11 OR a12 OR a13 OR a14 OR a15 OR a16 OR a17 OR a18 OR a19 OR a10 OR ' ||
+  'a21 OR a22 OR a23 OR a24 OR a25 OR a26 OR a27 OR a28 OR a29 OR a20 OR ' ||
+  'a31 OR a32 OR a33 OR a34 OR a35 OR a36 OR a37 OR a38 OR a39 OR a30 OR ' ||
+  'a41 OR a42 OR a43 OR a44 OR a45 OR a46 OR a47 OR a48 OR a49 OR a40 OR ' ||
+  'a51 OR a52 OR a53 OR a54 OR a55 OR a56 OR a57 OR a58 OR a59 OR a50 OR ' ||
+  'a61 OR a62 OR a63 OR a64 OR a65 OR a66 OR a67 OR a68 OR a69 OR a60 OR ' ||
+  'a71 OR a72 OR a73 OR a74 OR a75 OR a76 OR a77 OR a78 OR a79 OR a70'
+} {
+  {[a1] [a2] [a3]}
+  {[a4] [a5] [a6]}
+  {[a70] [a71] [a72]}
+}
 
 set sqlite_fts3_enable_parentheses 0
 finish_test