]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Silently ignore any attempt to add a prefix index for prefixes zero bytes in size...
authordan <dan@noemail.net>
Wed, 20 May 2015 19:32:18 +0000 (19:32 +0000)
committerdan <dan@noemail.net>
Wed, 20 May 2015 19:32:18 +0000 (19:32 +0000)
FossilOrigin-Name: ff7be4db8473fa850088e9b66231ba241a7543eb

ext/fts3/fts3.c
manifest
manifest.uuid
test/fts3prefix.test

index 4f4b667430985f90f4f165ec1dadb44dd4e9ba0a..4ea6bf327fb4acc1cb5ebeda51536bc24058c46e 100644 (file)
@@ -957,7 +957,6 @@ static int fts3PrefixParameter(
 
   aIndex = sqlite3_malloc(sizeof(struct Fts3Index) * nIndex);
   *apIndex = aIndex;
-  *pnIndex = nIndex;
   if( !aIndex ){
     return SQLITE_NOMEM;
   }
@@ -969,11 +968,17 @@ static int fts3PrefixParameter(
     for(i=1; i<nIndex; i++){
       int nPrefix;
       if( fts3GobbleInt(&p, &nPrefix) ) return SQLITE_ERROR;
-      aIndex[i].nPrefix = nPrefix;
+      if( nPrefix<=0 ){
+        nIndex--;
+        i--;
+      }else{
+        aIndex[i].nPrefix = nPrefix;
+      }
       p++;
     }
   }
 
+  *pnIndex = nIndex;
   return SQLITE_OK;
 }
 
index c82d9a814041573a66e9605f996d85b238344c3c..ba9808f607079ed2c6451d5309565914c7288413 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Version\s3.8.6.1
-D 2014-10-22T14:22:11.191
+C Silently\signore\sany\sattempt\sto\sadd\sa\sprefix\sindex\sfor\sprefixes\szero\sbytes\sin\ssize\sto\san\sfts3/4\stable.\sOr\sany\sprefix\sindex\ssize\sso\slarge\sthat\sit\soverflows\sa\s32-bit\ssigned\sinteger.\sCherrypick\sof\s[ad4b19d2ac0889a2].
+D 2015-05-20T19:32:18.172
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 5eb79e334a5de69c87740edd56af6527dd219308
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -78,7 +78,7 @@ F ext/fts3/README.content fdc666a70d5257a64fee209f97cf89e0e6e32b51
 F ext/fts3/README.syntax a19711dc5458c20734b8e485e75fb1981ec2427a
 F ext/fts3/README.tokenizers e0a8b81383ea60d0334d274fadf305ea14a8c314
 F ext/fts3/README.txt 8c18f41574404623b76917b9da66fcb0ab38328d
-F ext/fts3/fts3.c 2f5e925bdb9d6d3e488c5a981af60cad4f9cdfe7
+F ext/fts3/fts3.c d41ed0df225b099b78fcecac1bf181a801002cfd
 F ext/fts3/fts3.h 3a10a0af180d502cecc50df77b1b22df142817fe
 F ext/fts3/fts3Int.h 53d4eca1fb23eab00681fb028fb82eb5705c1e21
 F ext/fts3/fts3_aux.c 5c211e17a64885faeb16b9ba7772f9d5445c2365
@@ -562,7 +562,7 @@ F test/fts3join.test 53e66a0c21eb568580674a43b21c059acb26f499
 F test/fts3malloc.test b0e4c133b8d61d4f6d112d8110f8320e9e453ef6
 F test/fts3matchinfo.test ff423e73faab8fc6d7adeefedf74dd8e2b0b14e0
 F test/fts3near.test 7e3354d46f155a822b59c0e957fd2a70c1d7e905
-F test/fts3prefix.test b36d4f00b128a51e7b386cc013a874246d9d7dc1
+F test/fts3prefix.test 6bd3fc277769a373f90e96c04f8747bee823e4c5
 F test/fts3prefix2.test e1f0a822ca661dced7f12ce392e14eaf65609dce
 F test/fts3query.test 4fefd43ff24993bc2c9b2778f2bec0cc7629e7ed
 F test/fts3rnd.test 1320d8826a845e38a96e769562bf83d7a92a15d0
@@ -1186,10 +1186,8 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P cad7f8d697540b31b98fcfbc5cd2173d5007db33
-R ffafe456ebc6b7c7611c29a1810c5b89
-T +bgcolor * #d0c0ff
-T +sym-release *
-T +sym-version-3.8.6.1 *
-U drh
-Z 385977405873e67c3e44c2f7de4e579d
+P 1581c30c389acb2af2c7040d3583c89d48f9bea5
+Q +ad4b19d2ac0889a23fe3b0fd844286efc10cdd82
+R 9bc6235a97dcd25a0d6cb0d5fe53c9a6
+U dan
+Z 07c797021a90de18a626c12c402cb672
index 1932b5aee866c52c9492a76cdaece968ecf68964..53aacfaa1c979ace8fdb0f44e960b540f8e8bc6f 100644 (file)
@@ -1 +1 @@
-1581c30c389acb2af2c7040d3583c89d48f9bea5
\ No newline at end of file
+ff7be4db8473fa850088e9b66231ba241a7543eb
\ No newline at end of file
index e7c197da9ddb9cd3e03ab8108e04c3b50db31173..70f508ad9a5e0ecab9f60d67fc6e4f6c0b8364e2 100644 (file)
@@ -209,5 +209,69 @@ do_catchsql_test 5.1 {
 do_catchsql_test 5.2 {
   CREATE VIRTUAL TABLE t4 USING fts4(prefix="");
 } {0 {}}
+do_catchsql_test 5.3 {
+  CREATE VIRTUAL TABLE t5 USING fts4(prefix="-1");
+} {1 {error parsing prefix parameter: -1}}
+
+#-------------------------------------------------------------------------
+# Prefix indexes of size 0 are ignored. Demonstrate this by showing that
+# adding prefix=0 does not change the contents of the %_segdir table.
+#
+reset_db
+do_execsql_test 6.1.1 {
+  CREATE VIRTUAL TABLE t1 USING fts4(prefix=0);
+  CREATE VIRTUAL TABLE t2 USING fts4;
+  INSERT INTO t1 VALUES('Twas Mulga Bill, from Eaglehawk, ');
+  INSERT INTO t2 VALUES('Twas Mulga Bill, from Eaglehawk, ');
+} {}
+do_execsql_test 6.1.2 {
+  SELECT md5sum(quote(root)) FROM t1_segdir;
+} [db eval {SELECT md5sum(quote(root)) FROM t2_segdir}]
+
+reset_db
+do_execsql_test 6.2.1 {
+  CREATE VIRTUAL TABLE t1 USING fts4(prefix="1,0,2");
+  CREATE VIRTUAL TABLE t2 USING fts4(prefix="1,2");
+  INSERT INTO t1 VALUES('that caught the cycling craze;');
+  INSERT INTO t2 VALUES('that caught the cycling craze;');
+} {}
+do_execsql_test 6.2.2 {
+  SELECT md5sum(quote(root)) FROM t1_segdir;
+} [db eval {SELECT md5sum(quote(root)) FROM t2_segdir}]
+
+reset_db
+do_execsql_test 6.3.1 {
+  CREATE VIRTUAL TABLE t1 USING fts4(prefix="1,3,2");
+  CREATE VIRTUAL TABLE t2 USING fts4(prefix="1,2");
+  INSERT INTO t1 VALUES('He turned away the good old horse');
+  INSERT INTO t2 VALUES('He turned away the good old horse');
+} {}
+do_test 6.3.2 {
+  set one [db eval {SELECT md5sum(quote(root)) FROM t1_segdir}]
+  set two [db eval {SELECT md5sum(quote(root)) FROM t2_segdir}]
+  expr {$one == $two}
+} 0
+
+reset_db
+do_execsql_test 6.4.1 {
+  CREATE VIRTUAL TABLE t1 USING fts4(prefix="1,600,2");
+  CREATE VIRTUAL TABLE t2 USING fts4(prefix="1,2");
+  INSERT INTO t1 VALUES('that served him many days;');
+  INSERT INTO t2 VALUES('that served him many days;');
+} {}
+do_execsql_test 6.4.2 {
+  SELECT md5sum(quote(root)) FROM t1_segdir;
+} [db eval {SELECT md5sum(quote(root)) FROM t2_segdir}]
+
+reset_db
+do_execsql_test 6.5.1 {
+  CREATE VIRTUAL TABLE t1 USING fts4(prefix="2147483647,2147483648,2147483649");
+  CREATE VIRTUAL TABLE t2 USING fts4(prefix="");
+  INSERT INTO t1 VALUES('He dressed himself in cycling clothes');
+  INSERT INTO t2 VALUES('He dressed himself in cycling clothes');
+} {}
+do_execsql_test 6.5.2 {
+  SELECT md5sum(quote(root)) FROM t1_segdir;
+} [db eval {SELECT md5sum(quote(root)) FROM t2_segdir}]
 
 finish_test