| Index: third_party/sqlite/sqlite-src-3100200/ext/fts5/test/fts5merge.test
|
| diff --git a/third_party/sqlite/sqlite-src-3100200/ext/fts5/test/fts5merge.test b/third_party/sqlite/sqlite-src-3100200/ext/fts5/test/fts5merge.test
|
| deleted file mode 100644
|
| index 9dd1ecd026d88782610dfc9bc31db6d86a7f2ded..0000000000000000000000000000000000000000
|
| --- a/third_party/sqlite/sqlite-src-3100200/ext/fts5/test/fts5merge.test
|
| +++ /dev/null
|
| @@ -1,194 +0,0 @@
|
| -# 2014 Dec 20
|
| -#
|
| -# 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.
|
| -#
|
| -#***********************************************************************
|
| -#
|
| -# Test that focus on incremental merges of segments.
|
| -#
|
| -
|
| -source [file join [file dirname [info script]] fts5_common.tcl]
|
| -set testprefix fts5merge
|
| -
|
| -# If SQLITE_ENABLE_FTS5 is defined, omit this file.
|
| -ifcapable !fts5 {
|
| - finish_test
|
| - return
|
| -}
|
| -
|
| -db func repeat [list string repeat]
|
| -
|
| -#-------------------------------------------------------------------------
|
| -# Create an fts index so that:
|
| -#
|
| -# * the index consists of two top-level segments
|
| -# * each segment contains records related to $nRowPerSeg rows
|
| -# * all rows consist of tokens "x" and "y" only.
|
| -#
|
| -# Then run ('merge', 1) until everything is completely merged.
|
| -#
|
| -proc do_merge1_test {testname nRowPerSeg} {
|
| - set ::nRowPerSeg [expr $nRowPerSeg]
|
| - do_execsql_test $testname.0 {
|
| - DROP TABLE IF EXISTS x8;
|
| - CREATE VIRTUAL TABLE x8 USING fts5(i);
|
| - INSERT INTO x8(x8, rank) VALUES('pgsz', 32);
|
| -
|
| - WITH ii(i) AS (SELECT 1 UNION ALL SELECT i+1 FROM ii WHERE i<$::nRowPerSeg)
|
| - INSERT INTO x8 SELECT repeat('x y ', i % 16) FROM ii;
|
| -
|
| - WITH ii(i) AS (SELECT 1 UNION ALL SELECT i+1 FROM ii WHERE i<$::nRowPerSeg)
|
| - INSERT INTO x8 SELECT repeat('x y ', i % 16) FROM ii;
|
| -
|
| - INSERT INTO x8(x8, rank) VALUES('automerge', 2);
|
| - }
|
| -
|
| - for {set tn 1} {[lindex [fts5_level_segs x8] 0]>0} {incr tn} {
|
| - do_execsql_test $testname.$tn {
|
| - INSERT INTO x8(x8, rank) VALUES('merge', 1);
|
| - INSERT INTO x8(x8) VALUES('integrity-check');
|
| - }
|
| - if {$tn>5} break
|
| - }
|
| -
|
| - do_test $testname.x [list expr "$tn < 5"] 1
|
| -}
|
| -
|
| -do_merge1_test 1.1 1
|
| -do_merge1_test 1.2 2
|
| -do_merge1_test 1.3 3
|
| -do_merge1_test 1.4 4
|
| -do_merge1_test 1.5 10
|
| -do_merge1_test 1.6 20
|
| -do_merge1_test 1.7 100
|
| -
|
| -#-------------------------------------------------------------------------
|
| -#
|
| -proc do_merge2_test {testname nRow} {
|
| - db func rnddoc fts5_rnddoc
|
| -
|
| - do_execsql_test $testname.0 {
|
| - DROP TABLE IF EXISTS x8;
|
| - CREATE VIRTUAL TABLE x8 USING fts5(i);
|
| - INSERT INTO x8(x8, rank) VALUES('pgsz', 32);
|
| - }
|
| -
|
| - set ::nRow $nRow
|
| - do_test $testname.1 {
|
| - for {set i 0} {$i < $::nRow} {incr i} {
|
| - execsql { INSERT INTO x8 VALUES( rnddoc(($i%16) + 5) ) }
|
| - while {[not_merged x8]} {
|
| - execsql {
|
| - INSERT INTO x8(x8, rank) VALUES('automerge', 2);
|
| - INSERT INTO x8(x8, rank) VALUES('merge', 1);
|
| - INSERT INTO x8(x8, rank) VALUES('automerge', 16);
|
| - INSERT INTO x8(x8) VALUES('integrity-check');
|
| - }
|
| - }
|
| - }
|
| - } {}
|
| -}
|
| -proc not_merged {tbl} {
|
| - set segs [fts5_level_segs $tbl]
|
| - foreach s $segs { if {$s>1} { return 1 } }
|
| - return 0
|
| -}
|
| -
|
| -do_merge2_test 2.1 5
|
| -do_merge2_test 2.2 10
|
| -do_merge2_test 2.3 20
|
| -
|
| -#-------------------------------------------------------------------------
|
| -# Test that an auto-merge will complete any merge that has already been
|
| -# started, even if the number of input segments is less than the current
|
| -# value of the 'automerge' configuration parameter.
|
| -#
|
| -db func rnddoc fts5_rnddoc
|
| -
|
| -do_execsql_test 3.1 {
|
| - DROP TABLE IF EXISTS x8;
|
| - CREATE VIRTUAL TABLE x8 USING fts5(i);
|
| - INSERT INTO x8(x8, rank) VALUES('pgsz', 32);
|
| - INSERT INTO x8 VALUES(rnddoc(100));
|
| - INSERT INTO x8 VALUES(rnddoc(100));
|
| -}
|
| -do_test 3.2 {
|
| - execsql {
|
| - INSERT INTO x8(x8, rank) VALUES('automerge', 4);
|
| - INSERT INTO x8(x8, rank) VALUES('merge', 1);
|
| - }
|
| - fts5_level_segs x8
|
| -} {2}
|
| -
|
| -do_test 3.3 {
|
| - execsql {
|
| - INSERT INTO x8(x8, rank) VALUES('automerge', 2);
|
| - INSERT INTO x8(x8, rank) VALUES('merge', 1);
|
| - }
|
| - fts5_level_segs x8
|
| -} {2 1}
|
| -
|
| -do_test 3.4 {
|
| - execsql { INSERT INTO x8(x8, rank) VALUES('automerge', 4) }
|
| - while {[not_merged x8]} {
|
| - execsql { INSERT INTO x8(x8, rank) VALUES('merge', 1) }
|
| - }
|
| - fts5_level_segs x8
|
| -} {0 1}
|
| -
|
| -#-------------------------------------------------------------------------
|
| -#
|
| -proc mydoc {} {
|
| - set x [lindex {a b c d e f g h i j} [expr int(rand()*10)]]
|
| - return [string repeat "$x " 30]
|
| -}
|
| -db func mydoc mydoc
|
| -
|
| -proc mycount {} {
|
| - set res [list]
|
| - foreach x {a b c d e f g h i j} {
|
| - lappend res [db one {SELECT count(*) FROM x8 WHERE x8 MATCH $x}]
|
| - }
|
| - set res
|
| -}
|
| -
|
| - #1 32
|
| -foreach {tn pgsz} {
|
| - 2 1000
|
| -} {
|
| - do_execsql_test 4.$tn.1 {
|
| - DROP TABLE IF EXISTS x8;
|
| - CREATE VIRTUAL TABLE x8 USING fts5(i);
|
| - INSERT INTO x8(x8, rank) VALUES('pgsz', $pgsz);
|
| - }
|
| -
|
| - do_execsql_test 4.$tn.2 {
|
| - INSERT INTO x8(x8, rank) VALUES('merge', 1);
|
| - }
|
| -
|
| - do_execsql_test 4.$tn.3 {
|
| - WITH ii(i) AS (SELECT 1 UNION ALL SELECT i+1 FROM ii WHERE i<100)
|
| - INSERT INTO x8 SELECT mydoc() FROM ii;
|
| - WITH ii(i) AS (SELECT 1 UNION ALL SELECT i+1 FROM ii WHERE i<100)
|
| - INSERT INTO x8 SELECT mydoc() FROM ii;
|
| - INSERT INTO x8(x8, rank) VALUES('automerge', 2);
|
| - }
|
| -
|
| - set expect [mycount]
|
| - for {set i 0} {$i < 20} {incr i} {
|
| - do_test 4.$tn.4.$i {
|
| - execsql { INSERT INTO x8(x8, rank) VALUES('merge', 1); }
|
| - mycount
|
| - } $expect
|
| - break
|
| - }
|
| -# db eval {SELECT fts5_decode(rowid, block) AS r FROM x8_data} { puts $r }
|
| -}
|
| -
|
| -finish_test
|
| -
|
|
|