| Index: third_party/sqlite/src/test/fts3defer.test
|
| diff --git a/third_party/sqlite/src/test/fts3defer.test b/third_party/sqlite/src/test/fts3defer.test
|
| index 1c9056fd9d25de68f36c174d2b3ba5121cc0e8dd..532d4dfa6a6d2d78309ebb3f169f34229d0c6991 100644
|
| --- a/third_party/sqlite/src/test/fts3defer.test
|
| +++ b/third_party/sqlite/src/test/fts3defer.test
|
| @@ -13,13 +13,15 @@ set testdir [file dirname $argv0]
|
| source $testdir/tester.tcl
|
| source $testdir/malloc_common.tcl
|
|
|
| -ifcapable !fts3 {
|
| +ifcapable !fts3||!fts4_deferred {
|
| finish_test
|
| return
|
| }
|
|
|
| set sqlite_fts3_enable_parentheses 1
|
|
|
| +set fts3_simple_deferred_tokens_only 1
|
| +
|
| set ::testprefix fts3defer
|
|
|
| #--------------------------------------------------------------------------
|
| @@ -257,7 +259,6 @@ foreach {tn setup} {
|
| do_select_test 1.2 {
|
| SELECT rowid FROM t1 WHERE t1 MATCH 'jk eh'
|
| } {100}
|
| -if {$tn==3} breakpoint
|
| do_select_test 1.3 {
|
| SELECT rowid FROM t1 WHERE t1 MATCH 'jk ubwrfqnbjf'
|
| } {7 70 98}
|
| @@ -282,13 +283,16 @@ if {$tn==3} breakpoint
|
| do_select_test 1.10 {
|
| SELECT rowid FROM t1 WHERE t1 MATCH 'z* vgsld'
|
| } {10 13 17 31 35 51 58 88 89 90 93 100}
|
| - do_select_test 1.11 {
|
| - SELECT rowid FROM t1
|
| - WHERE t1 MATCH '(
|
| - zdu OR zexh OR zf OR zhbrzadb OR zidhxhbtv OR
|
| - zk OR zkhdvkw OR zm OR zsmhnf
|
| - ) vgsld'
|
| - } {10 13 17 31 35 51 58 88 89 90 93 100}
|
| +
|
| + if { $fts3_simple_deferred_tokens_only==0 } {
|
| + do_select_test 1.11 {
|
| + SELECT rowid FROM t1
|
| + WHERE t1 MATCH '(
|
| + zdu OR zexh OR zf OR zhbrzadb OR zidhxhbtv OR
|
| + zk OR zkhdvkw OR zm OR zsmhnf
|
| + ) vgsld'
|
| + } {10 13 17 31 35 51 58 88 89 90 93 100}
|
| + }
|
|
|
| do_select_test 2.1 {
|
| SELECT rowid FROM t1 WHERE t1 MATCH '"zm agmckuiu"'
|
| @@ -364,6 +368,7 @@ if {$tn==3} breakpoint
|
| foreach DO_MALLOC_TEST $dmt_modes {
|
|
|
| # Phrase search.
|
| + #
|
| do_select_test 5.$DO_MALLOC_TEST.1 {
|
| SELECT rowid FROM t1 WHERE t1 MATCH '"jk mjpavjuhw"'
|
| } {8 15 36 64 67 72}
|
| @@ -416,9 +421,23 @@ if {$tn==3} breakpoint
|
| do_select_test 6.2.2 {
|
| SELECT rowid FROM t1 WHERE t1 MATCH '"zm azavwm"'
|
| } {15 26 92 96}
|
| - do_select_test 6.2.3 {
|
| - SELECT rowid FROM t1 WHERE t1 MATCH '"jk xduvfhk" OR "zm azavwm"'
|
| - } {8 15 26 92 96}
|
| + if {$fts3_simple_deferred_tokens_only==0} {
|
| + do_select_test 6.2.3 {
|
| + SELECT rowid FROM t1 WHERE t1 MATCH '"jk xduvfhk" OR "zm azavwm"'
|
| + } {8 15 26 92 96}
|
| + }
|
| +
|
| + if {$tn>1} {
|
| + # These tests will not work with $tn==1, as in this case table t1 is
|
| + # created using FTS3. The ^ syntax is only available with FTS4 tables.
|
| + #
|
| + do_select_test 7.1 {
|
| + SELECT rowid FROM t1 WHERE t1 MATCH '^zm mjpavjuhw'
|
| + } {56 62}
|
| + do_select_test 7.2 {
|
| + SELECT rowid FROM t1 WHERE t1 MATCH '^azavwm zm'
|
| + } {43}
|
| + }
|
| }
|
|
|
| set testprefix fts3defer
|
| @@ -442,5 +461,67 @@ do_execsql_test 3.3 {
|
| SELECT count(*) FROM x1 WHERE x1 MATCH '"d e f"'
|
| } {16}
|
|
|
| +# At one point the following was causing a floating-point exception.
|
| +#
|
| +do_execsql_test 4.1 {
|
| + CREATE VIRTUAL TABLE x2 USING FTS4(x);
|
| + BEGIN;
|
| + INSERT INTO x2 VALUES('m m m m m m m m m m m m m m m m m m m m m m m m m m');
|
| + INSERT INTO x2 SELECT * FROM x2;
|
| + INSERT INTO x2 SELECT * FROM x2;
|
| + INSERT INTO x2 SELECT * FROM x2;
|
| + INSERT INTO x2 SELECT * FROM x2;
|
| + INSERT INTO x2 SELECT * FROM x2;
|
| + INSERT INTO x2 SELECT * FROM x2;
|
| + INSERT INTO x2 SELECT * FROM x2;
|
| + INSERT INTO x2 SELECT * FROM x2;
|
| + INSERT INTO x2 SELECT * FROM x2;
|
| + INSERT INTO x2 SELECT * FROM x2;
|
| + INSERT INTO x2 SELECT * FROM x2;
|
| + INSERT INTO x2 SELECT * FROM x2;
|
| + INSERT INTO x2 SELECT * FROM x2;
|
| + INSERT INTO x2 SELECT * FROM x2;
|
| + INSERT INTO x2 SELECT * FROM x2;
|
| + INSERT INTO x2 VALUES('a b c d e f g h i j k l m n o p q r s t u v w x y m');
|
| + COMMIT;
|
| +}
|
| +do_execsql_test 4.2 {
|
| + SELECT * FROM x2 WHERE x2 MATCH 'a b c d e f g h i j k l m n o p q r s';
|
| +} {{a b c d e f g h i j k l m n o p q r s t u v w x y m}}
|
| +
|
| +set tokenizers {1 simple}
|
| +ifcapable icu { lappend tokenizers 2 {icu en_US} }
|
| +foreach {tn tokenizer} $tokenizers {
|
| + do_execsql_test 5.$tn.1 "
|
| + CREATE VIRTUAL TABLE x3 USING FTS4(a, b, TOKENIZE $tokenizer)
|
| + "
|
| + do_execsql_test 5.$tn.2 {
|
| + BEGIN;
|
| + INSERT INTO x3 VALUES('b b b b b b b b b b b', 'b b b b b b b b b b b b b');
|
| + INSERT INTO x3 SELECT * FROM x3;
|
| + INSERT INTO x3 SELECT * FROM x3;
|
| + INSERT INTO x3 SELECT * FROM x3;
|
| + INSERT INTO x3 SELECT * FROM x3;
|
| + INSERT INTO x3 SELECT * FROM x3;
|
| + INSERT INTO x3 SELECT * FROM x3;
|
| + INSERT INTO x3 SELECT * FROM x3;
|
| + INSERT INTO x3 SELECT * FROM x3;
|
| + INSERT INTO x3 SELECT * FROM x3;
|
| + INSERT INTO x3 SELECT * FROM x3;
|
| + INSERT INTO x3 SELECT * FROM x3;
|
| + INSERT INTO x3 SELECT * FROM x3;
|
| + INSERT INTO x3 SELECT * FROM x3;
|
| + INSERT INTO x3 SELECT * FROM x3;
|
| + INSERT INTO x3 SELECT * FROM x3;
|
| + INSERT INTO x3 SELECT * FROM x3;
|
| + INSERT INTO x3 VALUES('a b c', NULL);
|
| + INSERT INTO x3 VALUES('a x c', NULL);
|
| + COMMIT;
|
| +
|
| + SELECT * FROM x3 WHERE x3 MATCH 'a b';
|
| + } {{a b c} {}}
|
| +
|
| + do_execsql_test 5.$tn.3 { DROP TABLE x3 }
|
| +}
|
|
|
| finish_test
|
|
|