12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- # 2017 November 25
- #
- # The author disclaims copyright to this source code. In place of
- # a legal notice, here is a blessing:
- #
- # May you do good and not evil.
- # May you find forgiveness for yourself and forgive others.
- # May you share freely, never taking more than you give.
- #
- #***********************************************************************
- source [file join [file dirname [info script]] fts5_common.tcl]
- set testprefix fts5first
- ifcapable !fts5 {
- finish_test
- return
- }
- do_execsql_test 1.0 {
- CREATE VIRTUAL TABLE x1 USING fts5(a, b);
- }
- unset -nocomplain res
- foreach {tn expr ok} {
- 1 {^abc} 1
- 2 {^abc + def} 1
- 3 {^ "abc def"} 1
- 4 {^"abc def"} 1
- 5 {abc ^def} 1
- 6 {abc + ^def} 0
- 7 {abc ^+ def} 0
- 8 {"^abc"} 1
- 9 {NEAR(^abc def)} 0
- } {
- set res(0) {/1 {fts5: syntax error near .*}/}
- set res(1) {0 {}}
- do_catchsql_test 1.$tn { SELECT * FROM x1($expr) } $res($ok)
- }
- #-------------------------------------------------------------------------
- #
- do_execsql_test 2.0 {
- INSERT INTO x1 VALUES('a b c', 'b c a');
- }
- foreach {tn expr match} {
- 1 {^a} 1
- 2 {^b} 1
- 3 {^c} 0
- 4 {^a + b} 1
- 5 {^b + c} 1
- 6 {^c + a} 0
- 7 {^"c a"} 0
- 8 {a:^a} 1
- 9 {a:^b} 0
- 10 {a:^"a b"} 1
- } {
- do_execsql_test 2.$tn { SELECT EXISTS (SELECT rowid FROM x1($expr)) } $match
- }
- #-------------------------------------------------------------------------
- #
- do_execsql_test 3.0 {
- DELETE FROM x1;
- INSERT INTO x1 VALUES('b a', 'c a');
- INSERT INTO x1 VALUES('a a', 'c c');
- INSERT INTO x1 VALUES('a b', 'a a');
- }
- fts5_aux_test_functions db
- foreach {tn expr expect} {
- 1 {^a} {{2 1}}
- 2 {^c AND ^b} {{0 2} {1 0}}
- } {
- do_execsql_test 3.$tn {
- SELECT fts5_test_queryphrase(x1) FROM x1($expr) LIMIT 1
- } [list $expect]
- }
- #-------------------------------------------------------------------------
- #
- do_execsql_test 3.1 {
- CREATE VIRTUAL TABLE x2 USING fts5(a, b, c, detail=column);
- }
- do_catchsql_test 3.2 {
- SELECT * FROM x2('a + b');
- } {1 {fts5: phrase queries are not supported (detail!=full)}}
- do_catchsql_test 3.3 {
- SELECT * FROM x2('^a');
- } {1 {fts5: phrase queries are not supported (detail!=full)}}
- finish_test
|