| Index: third_party/sqlite/src/test/fts3snippet.test
|
| diff --git a/third_party/sqlite/src/test/fts3snippet.test b/third_party/sqlite/src/test/fts3snippet.test
|
| index 359a87c6f318005c3fbc8d0ba2211a5892b5339a..415251dcced746f95079689bd1085b513782f34b 100644
|
| --- a/third_party/sqlite/src/test/fts3snippet.test
|
| +++ b/third_party/sqlite/src/test/fts3snippet.test
|
| @@ -16,6 +16,7 @@
|
|
|
| set testdir [file dirname $argv0]
|
| source $testdir/tester.tcl
|
| +set testprefix fts3snippet
|
|
|
| # If SQLITE_ENABLE_FTS3 is not defined, omit this file.
|
| ifcapable !fts3 { finish_test ; return }
|
| @@ -131,14 +132,14 @@ foreach {DO_MALLOC_TEST enc} {
|
| } {
|
|
|
| db close
|
| - file delete -force test.db
|
| + forcedelete test.db
|
| sqlite3 db test.db
|
| sqlite3_db_config_lookaside db 0 0 0
|
| db eval "PRAGMA encoding = \"$enc\""
|
|
|
| # Set variable $T to the test name prefix for this iteration of the loop.
|
| #
|
| - set T "fts3snippet-$enc"
|
| + set T "fts3snippet-1.$enc"
|
|
|
| ##########################################################################
|
| # Test the offset function.
|
| @@ -432,10 +433,10 @@ foreach {DO_MALLOC_TEST enc} {
|
| {2 2 1 3 3 3 6 3 0 0 0 2 3 2}
|
| }]
|
|
|
| - # EVIDENCE-OF: R-40630-02268 If used within a SELECT that uses the
|
| - # "query by rowid" or "linear scan" strategies, then the snippet and
|
| - # offsets both return an empty string, and the matchinfo function
|
| - # returns a blob value zero bytes in size.
|
| + # EVIDENCE-OF: R-40630-02268 If used within a SELECT that uses the
|
| + # "query by rowid" or "linear scan" strategies, then the snippet and
|
| + # offsets both return an empty string, and the matchinfo function
|
| + # returns a blob value zero bytes in size.
|
| #
|
| set r 1000000 ;# A rowid that exists in table ft
|
| do_select_test $T.10.0 { SELECT rowid FROM ft WHERE rowid = $r } $r
|
| @@ -459,5 +460,65 @@ foreach {DO_MALLOC_TEST enc} {
|
| } {0 blob}
|
| }
|
|
|
| +#-------------------------------------------------------------------------
|
| +# Test an interaction between the snippet() function and OR clauses.
|
| +#
|
| +do_execsql_test 2.1 {
|
| + CREATE VIRTUAL TABLE t2 USING fts4;
|
| + INSERT INTO t2 VALUES('one two three four five');
|
| + INSERT INTO t2 VALUES('two three four five one');
|
| + INSERT INTO t2 VALUES('three four five one two');
|
| + INSERT INTO t2 VALUES('four five one two three');
|
| + INSERT INTO t2 VALUES('five one two three four');
|
| +}
|
| +
|
| +do_execsql_test 2.2 {
|
| + SELECT snippet(t2, '[', ']') FROM t2 WHERE t2 MATCH 'one OR (four AND six)'
|
| +} {
|
| + {[one] two three [four] five}
|
| + {two three [four] five [one]}
|
| + {three [four] five [one] two}
|
| + {[four] five [one] two three}
|
| + {five [one] two three [four]}
|
| +}
|
| +
|
| +do_execsql_test 2.3 {
|
| + SELECT snippet(t2, '[', ']') FROM t2
|
| + WHERE t2 MATCH 'one OR (four AND six)'
|
| + ORDER BY docid DESC
|
| +} {
|
| + {five [one] two three [four]}
|
| + {[four] five [one] two three}
|
| + {three [four] five [one] two}
|
| + {two three [four] five [one]}
|
| + {[one] two three [four] five}
|
| +}
|
| +
|
| +do_execsql_test 2.4 {
|
| + INSERT INTO t2 VALUES('six');
|
| +}
|
| +
|
| +do_execsql_test 2.5 {
|
| + SELECT snippet(t2, '[', ']') FROM t2 WHERE t2 MATCH 'one OR (four AND six)'
|
| +} {
|
| + {[one] two three [four] five}
|
| + {two three [four] five [one]}
|
| + {three [four] five [one] two}
|
| + {[four] five [one] two three}
|
| + {five [one] two three [four]}
|
| +}
|
| +
|
| +do_execsql_test 2.6 {
|
| + SELECT snippet(t2, '[', ']') FROM t2
|
| + WHERE t2 MATCH 'one OR (four AND six)'
|
| + ORDER BY docid DESC
|
| +} {
|
| + {five [one] two three [four]}
|
| + {[four] five [one] two three}
|
| + {three [four] five [one] two}
|
| + {two three [four] five [one]}
|
| + {[one] two three [four] five}
|
| +}
|
| +
|
| set sqlite_fts3_enable_parentheses 0
|
| finish_test
|
|
|