Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Unified Diff: third_party/sqlite/src/ext/fts5/test/fts5synonym.test

Issue 2751253002: [sql] Import SQLite 3.17.0. (Closed)
Patch Set: also clang on Linux i386 Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/sqlite/src/ext/fts5/test/fts5synonym.test
diff --git a/third_party/sqlite/src/ext/fts5/test/fts5synonym.test b/third_party/sqlite/src/ext/fts5/test/fts5synonym.test
index 008d2fc5439b48ae1aeb197d92fa8a0a6eacb559..62436631235c8521f63d261c971befb6b649b0af 100644
--- a/third_party/sqlite/src/ext/fts5/test/fts5synonym.test
+++ b/third_party/sqlite/src/ext/fts5/test/fts5synonym.test
@@ -21,42 +21,16 @@ ifcapable !fts5 {
return
}
-foreach S {
- {zero 0}
- {one 1 i}
- {two 2 ii}
- {three 3 iii}
- {four 4 iv}
- {five 5 v}
- {six 6 vi}
- {seven 7 vii}
- {eight 8 viii}
- {nine 9 ix}
-} {
- foreach s $S {
- set o [list]
- foreach x $S {if {$x!=$s} {lappend o $x}}
- set ::syn($s) $o
- }
-}
-
-proc tcl_tokenize {tflags text} {
- foreach {w iStart iEnd} [fts5_tokenize_split $text] {
- sqlite3_fts5_token $w $iStart $iEnd
- }
-}
+proc tcl_create {args} { return "tcl_tokenize" }
-proc tcl_create {args} {
- return "tcl_tokenize"
-}
-
-sqlite3_fts5_create_tokenizer db tcl tcl_create
+foreach_detail_mode $testprefix {
#-------------------------------------------------------------------------
# Warm body test for the code in fts5_tcl.c.
#
+fts5_tclnum_register db
do_execsql_test 1.0 {
- CREATE VIRTUAL TABLE ft USING fts5(x, tokenize = tcl);
+ CREATE VIRTUAL TABLE ft USING fts5(x, tokenize = "tclnum document", detail=%DETAIL%);
INSERT INTO ft VALUES('abc def ghi');
INSERT INTO ft VALUES('jkl mno pqr');
SELECT rowid, x FROM ft WHERE ft MATCH 'def';
@@ -67,22 +41,13 @@ do_execsql_test 1.0 {
# Test a tokenizer that supports synonyms by adding extra entries to the
# FTS index.
#
-
-proc tcl_tokenize {tflags text} {
- foreach {w iStart iEnd} [fts5_tokenize_split $text] {
- sqlite3_fts5_token $w $iStart $iEnd
- if {$tflags=="document" && [info exists ::syn($w)]} {
- foreach s $::syn($w) {
- sqlite3_fts5_token -colo $s $iStart $iEnd
- }
- }
- }
-}
reset_db
-sqlite3_fts5_create_tokenizer db tcl tcl_create
+fts5_tclnum_register db
do_execsql_test 2.0 {
- CREATE VIRTUAL TABLE ft USING fts5(x, tokenize = tcl);
+ CREATE VIRTUAL TABLE ft USING fts5(
+ x, tokenize = "tclnum document", detail=%DETAIL%
+ );
INSERT INTO ft VALUES('one two three');
INSERT INTO ft VALUES('four five six');
INSERT INTO ft VALUES('eight nine ten');
@@ -95,6 +60,7 @@ foreach {tn expr res} {
4 "1*" {1}
5 "1 + 2" {1}
} {
+ if {![fts5_expr_ok $expr ft]} continue
do_execsql_test 2.1.$tn {
SELECT rowid FROM ft WHERE ft MATCH $expr
} $res
@@ -180,29 +146,21 @@ do_execsql_test 3.2.5 {
# Check that expressions with synonyms can be parsed and executed.
#
reset_db
-sqlite3_fts5_create_tokenizer db tcl tcl_create
-proc tcl_tokenize {tflags text} {
- foreach {w iStart iEnd} [fts5_tokenize_split $text] {
- sqlite3_fts5_token $w $iStart $iEnd
- if {$tflags=="query" && [info exists ::syn($w)]} {
- foreach s $::syn($w) {
- sqlite3_fts5_token -colo $s $iStart $iEnd
- }
- }
- }
-}
+fts5_tclnum_register db
foreach {tn expr res} {
1 {abc} {"abc"}
2 {one} {"one"|"i"|"1"}
3 {3} {"3"|"iii"|"three"}
- 4 {3*} {"3"|"iii"|"three" *}
+ 4 {3*} {"3" *}
} {
- do_execsql_test 4.1.$tn {SELECT fts5_expr($expr, 'tokenize=tcl')} [list $res]
+ do_execsql_test 4.1.$tn {
+ SELECT fts5_expr($expr, 'tokenize=tclnum')
+ } [list $res]
}
do_execsql_test 4.2.1 {
- CREATE VIRTUAL TABLE xx USING fts5(x, tokenize=tcl);
+ CREATE VIRTUAL TABLE xx USING fts5(x, tokenize=tclnum, detail=%DETAIL%);
INSERT INTO xx VALUES('one two');
INSERT INTO xx VALUES('three four');
}
@@ -217,7 +175,7 @@ do_execsql_test 4.2.3 {
do_test 5.0 {
execsql {
- CREATE VIRTUAL TABLE t1 USING fts5(a, b, tokenize=tcl)
+ CREATE VIRTUAL TABLE t1 USING fts5(a, b, tokenize=tclnum, detail=%DETAIL%)
}
foreach {rowid a b} {
1 {four v 4 i three} {1 3 five five 4 one}
@@ -285,6 +243,7 @@ foreach {tn q res} {
5 {three i v i four 4 1} {ii [five five five] iii}
}
} {
+ if {![fts5_expr_ok $q t1]} continue
do_execsql_test 5.1.$tn {
SELECT rowid, highlight(t1, 0, '[', ']'), highlight(t1, 1, '[', ']')
FROM t1 WHERE t1 MATCH $q
@@ -316,7 +275,6 @@ foreach {tn q res} {
} $res
}
-
#-------------------------------------------------------------------------
# Test terms with more than 4 synonyms.
#
@@ -334,17 +292,19 @@ proc tcl_tokenize {tflags text} {
}
do_execsql_test 6.0.1 {
- CREATE VIRTUAL TABLE t1 USING fts5(x, tokenize=tcl);
+ CREATE VIRTUAL TABLE t1 USING fts5(x, tokenize=tcl, detail=%DETAIL%);
INSERT INTO t1 VALUES('yy xx qq');
INSERT INTO t1 VALUES('yy xx xx');
}
-do_execsql_test 6.0.2 {
- SELECT * FROM t1 WHERE t1 MATCH 'NEAR(y q)';
-} {{yy xx qq}}
+if {[fts5_expr_ok "NEAR(y q)" t1]} {
+ do_execsql_test 6.0.2 {
+ SELECT * FROM t1 WHERE t1 MATCH 'NEAR(y q)';
+ } {{yy xx qq}}
+}
do_test 6.0.3 {
execsql {
- CREATE VIRTUAL TABLE t2 USING fts5(a, b, tokenize=tcl)
+ CREATE VIRTUAL TABLE t2 USING fts5(a, b, tokenize=tcl, detail=%DETAIL%)
}
foreach {rowid a b} {
1 {yyyy vvvvv qq oo yyyyyy vvvv eee} {ffff uu r qq aaaa}
@@ -387,6 +347,8 @@ foreach {tn q res} {
2 {ww oooooo bbbbb ssssss mm} {ffffff [yy] iiii rr s ccc [qqqqq]}
}
} {
+ if {![fts5_expr_ok $q t2]} continue
+
do_execsql_test 6.1.$tn.asc {
SELECT rowid, highlight(t2, 0, '[', ']'), highlight(t2, 1, '[', ']')
FROM t2 WHERE t2 MATCH $q
@@ -435,7 +397,7 @@ proc tcl_tokenize {tflags text} {
}
do_execsql_test 7.0.1 {
- CREATE VIRTUAL TABLE t1 USING fts5(a, b, columnsize=1, tokenize=tcl);
+ CREATE VIRTUAL TABLE t1 USING fts5(a, b, columnsize=1, tokenize=tcl, detail=%DETAIL%);
INSERT INTO t1 VALUES('0 2 3', '4 5 6 7');
INSERT INTO t1 VALUES('8 9', '0 0 0 0 0 0 0 0 0 0');
SELECT fts5_test_columnsize(t1) FROM t1 WHERE t1 MATCH '000 AND 00 AND 0';
@@ -446,7 +408,7 @@ do_execsql_test 7.0.2 {
}
do_execsql_test 7.1.1 {
- CREATE VIRTUAL TABLE t2 USING fts5(a, b, columnsize=0, tokenize=tcl);
+ CREATE VIRTUAL TABLE t2 USING fts5(a, b, columnsize=0, tokenize=tcl, detail=%DETAIL%);
INSERT INTO t2 VALUES('0 2 3', '4 5 6 7');
INSERT INTO t2 VALUES('8 9', '0 0 0 0 0 0 0 0 0 0');
SELECT fts5_test_columnsize(t2) FROM t2 WHERE t2 MATCH '000 AND 00 AND 0';
@@ -456,5 +418,7 @@ do_execsql_test 7.1.2 {
INSERT INTO t2(t2) VALUES('integrity-check');
}
+} ;# foreach_detail_mode
+
finish_test
« no previous file with comments | « third_party/sqlite/src/ext/fts5/test/fts5simple3.test ('k') | third_party/sqlite/src/ext/fts5/test/fts5synonym2.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698