Add the "languageid=" option to fts4. This code is still largely untested and alsmost certainly buggy.
FossilOrigin-Name: bea257f70f10dd1111d79cabd1e1462dc651704d
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
# 2012 March 01
|
||||
#
|
||||
# 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.
|
||||
#
|
||||
#*************************************************************************
|
||||
# This file implements regression tests for SQLite library. The
|
||||
# focus of this script is testing the languageid=xxx FTS4 option.
|
||||
#
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
set ::testprefix fts4content
|
||||
|
||||
# If SQLITE_ENABLE_FTS3 is defined, omit this file.
|
||||
ifcapable !fts3 {
|
||||
finish_test
|
||||
return
|
||||
}
|
||||
|
||||
set ::testprefix fts4langid
|
||||
|
||||
|
||||
|
||||
do_execsql_test 1.1 {
|
||||
CREATE VIRTUAL TABLE t1 USING fts4(a, b, languageid=lang_id);
|
||||
}
|
||||
|
||||
do_execsql_test 1.2 {
|
||||
SELECT sql FROM sqlite_master WHERE name = 't1_content';
|
||||
} {{CREATE TABLE 't1_content'(docid INTEGER PRIMARY KEY, 'c0a', 'c1b', langid)}}
|
||||
|
||||
do_execsql_test 1.3 {SELECT docid FROM t1} {}
|
||||
do_execsql_test 1.4 {SELECT lang_id FROM t1} {}
|
||||
|
||||
do_execsql_test 1.5 {INSERT INTO t1(a, b) VALUES('aaa', 'bbb')}
|
||||
do_execsql_test 1.6 {SELECT lang_id FROM t1 } {0}
|
||||
|
||||
do_execsql_test 1.7 {INSERT INTO t1(a, b, lang_id) VALUES('aaa', 'bbb', 4)}
|
||||
do_execsql_test 1.8 {SELECT lang_id FROM t1 } {0 4}
|
||||
|
||||
do_execsql_test 1.9 {INSERT INTO t1(a, b, lang_id) VALUES('aaa', 'bbb', 'xyz')}
|
||||
do_execsql_test 1.10 {SELECT lang_id FROM t1} {0 4 0}
|
||||
|
||||
do_execsql_test 1.11 {
|
||||
CREATE VIRTUAL TABLE t2 USING fts4;
|
||||
INSERT INTO t2 VALUES('abc');
|
||||
}
|
||||
do_execsql_test 1.12 { SELECT rowid FROM t2 WHERE content MATCH 'abc' } 1
|
||||
|
||||
do_execsql_test 1.13 {
|
||||
DROP TABLE t1;
|
||||
CREATE VIRTUAL TABLE t1 USING fts4(languageid=lang_id);
|
||||
INSERT INTO t1(content) VALUES('a b c');
|
||||
INSERT INTO t1(content, lang_id) VALUES('a b c', 1);
|
||||
}
|
||||
|
||||
do_execsql_test 1.14 {
|
||||
SELECT rowid FROM t1 WHERE t1 MATCH 'b';
|
||||
} {1}
|
||||
do_execsql_test 1.15 {
|
||||
SELECT rowid FROM t1 WHERE t1 MATCH 'b' AND lang_id = 0;
|
||||
} {1}
|
||||
|
||||
do_execsql_test 1.16 {
|
||||
SELECT rowid FROM t1 WHERE t1 MATCH 'b' AND lang_id = 1;
|
||||
} {2}
|
||||
|
||||
do_catchsql_test 1.17 {
|
||||
INSERT INTO t1(content, lang_id) VALUES('123', -1);
|
||||
} {1 {constraint failed}}
|
||||
|
||||
finish_test
|
||||
|
||||
Reference in New Issue
Block a user