1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-29 08:01:23 +03:00

Add tests for incremental merge code.

FossilOrigin-Name: 570473729d6561d81e6e5f8884fd18487008636e
This commit is contained in:
dan
2012-03-14 20:01:52 +00:00
parent a2af0aecdb
commit 5730ef599c
8 changed files with 268 additions and 138 deletions

View File

@ -23,35 +23,6 @@ ifcapable !fts3 {
return
}
proc fts3_build_db_1 {n} {
if {$n > 10000} {error "n must be <= 10000"}
db eval { CREATE VIRTUAL TABLE t1 USING fts4(x, y) }
set xwords [list zero one two three four five six seven eight nine ten]
set ywords [list alpha beta gamma delta epsilon zeta eta theta iota kappa]
for {set i 0} {$i < $n} {incr i} {
set x ""
set y ""
set x [list]
lappend x [lindex $xwords [expr ($i / 1000) % 10]]
lappend x [lindex $xwords [expr ($i / 100) % 10]]
lappend x [lindex $xwords [expr ($i / 10) % 10]]
lappend x [lindex $xwords [expr ($i / 1) % 10]]
set y [list]
lappend y [lindex $ywords [expr ($i / 1000) % 10]]
lappend y [lindex $ywords [expr ($i / 100) % 10]]
lappend y [lindex $ywords [expr ($i / 10) % 10]]
lappend y [lindex $ywords [expr ($i / 1) % 10]]
db eval { INSERT INTO t1(docid, x, y) VALUES($i, $x, $y) }
}
}
#-------------------------------------------------------------------------
# Test cases 1.*
#
@ -98,6 +69,57 @@ do_execsql_test 1.5 {
3 {0 1 2}
}
#-------------------------------------------------------------------------
# Test cases 2.* test that errors in the xxx part of the 'merge=xxx' are
# handled correctly.
#
do_execsql_test 2.0 { CREATE VIRTUAL TABLE t2 USING fts4 }
foreach {tn arg} {
1 {merge=abc}
2 {merge=%%%}
3 {merge=,}
4 {merge=5,}
5 {merge=6,%}
6 {merge=6,six}
7 {merge=6,1}
8 {merge=6,0}
} {
do_catchsql_test 2.$tn {
INSERT INTO t2(t2) VALUES($arg);
} {1 {SQL logic error or missing database}}
}
#-------------------------------------------------------------------------
# Test cases 3.*
#
do_test 3.0 {
reset_db
execsql { PRAGMA page_size = 512 }
fts3_build_db_2 30040
} {}
do_test 3.1 { fts3_integrity_check t2 } {ok}
do_execsql_test 3.2 {
SELECT level, group_concat(idx, ' ') FROM t2_segdir GROUP BY level
} {
0 {0 1 2 3 4 5 6 7}
1 {0 1 2 3 4}
2 {0 1 2 3 4}
3 {0 1 2 3 4 5 6}
}
do_execsql_test 3.3 {
INSERT INTO t2(t2) VALUES('merge=1000000,2');
SELECT level, group_concat(idx, ' ') FROM t2_segdir GROUP BY level
} {
0 {0 1}
1 {0 1}
2 0
3 {0 1}
4 {0 1}
5 0
}
finish_test