Fix the FTS 'optimize' command on multi-lingual databases.

FossilOrigin-Name: 65fa693729a336e4d905ce72e6b9ccf4faa772bd
This commit is contained in:
dan
2012-03-02 12:26:19 +00:00
parent e3ddd1ac42
commit 8fb662b0be
5 changed files with 66 additions and 27 deletions
+22 -6
View File
@@ -234,7 +234,7 @@ do_test 2.0 {
build_multilingual_db_1 db
} {}
proc do_test_2.1 {tn query res_script} {
proc do_test_2 {tn query res_script} {
for {set langid 0} {$langid < 10} {incr langid} {
rowid_list_set_langid $langid
set res [eval $res_script]
@@ -242,16 +242,32 @@ proc do_test_2.1 {tn query res_script} {
set actual [
execsql {SELECT docid FROM t2 WHERE t2 MATCH $query AND l = $langid}
]
do_test 2.1.$tn.$langid [list set {} $actual] $res
do_test 2.$tn.$langid [list set {} $actual] $res
}
}
do_test_2.1 1 {delta} { rowid_list delta }
do_test_2.1 2 {"zero one two"} { rowid_list "zero one two" }
do_test_2.1 3 {zero one two} {
# Run some queries.
do_test_2 1.1 {delta} { rowid_list delta }
do_test_2 1.2 {"zero one two"} { rowid_list "zero one two" }
do_test_2 1.3 {zero one two} {
and_merge_lists [rowid_list zero] [rowid_list one] [rowid_list two]
}
do_test_2.1 4 {"zero one" OR "one two"} {
do_test_2 1.4 {"zero one" OR "one two"} {
or_merge_lists [rowid_list "zero one"] [rowid_list "one two"]
}
# Now try the same tests as above, but after running the 'optimize'
# command on the FTS table.
do_execsql_test 2.2 {
INSERT INTO t2(t2) VALUES('optimize');
SELECT count(*) FROM t2_segdir;
} {9}
do_test_2 2.1 {delta} { rowid_list delta }
do_test_2 2.2 {"zero one two"} { rowid_list "zero one two" }
do_test_2 2.3 {zero one two} {
and_merge_lists [rowid_list zero] [rowid_list one] [rowid_list two]
}
do_test_2 2.4 {"zero one" OR "one two"} {
or_merge_lists [rowid_list "zero one"] [rowid_list "one two"]
}