summaryrefslogtreecommitdiffstats
path: root/test/fts4growth2.test
diff options
context:
space:
mode:
Diffstat (limited to 'test/fts4growth2.test')
-rw-r--r--test/fts4growth2.test92
1 files changed, 92 insertions, 0 deletions
diff --git a/test/fts4growth2.test b/test/fts4growth2.test
new file mode 100644
index 0000000..bcccf89
--- /dev/null
+++ b/test/fts4growth2.test
@@ -0,0 +1,92 @@
+# 2014 May 12
+#
+# 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 FTS4 module.
+#
+#
+
+set testdir [file dirname $argv0]
+source $testdir/tester.tcl
+set testprefix fts4growth2
+
+# If SQLITE_ENABLE_FTS3 is defined, omit this file.
+ifcapable !fts3 {
+ finish_test
+ return
+}
+
+source $testdir/genesis.tcl
+
+do_execsql_test 1.0 { CREATE TABLE t1(docid, words); }
+fts_kjv_genesis
+
+proc structure {} {
+ puts [ db eval {SELECT level, count(*) FROM x1_segdir GROUP BY level} ]
+}
+
+proc tt {val} {
+ execsql {
+ DELETE FROM x1
+ WHERE docid IN (SELECT docid FROM t1 WHERE (rowid-1)%4==$val+0);
+ }
+ execsql {
+ INSERT INTO x1(docid, content)
+ SELECT docid, words FROM t1 WHERE (rowid%4)==$val+0;
+ }
+}
+
+do_execsql_test 1.1 {
+ CREATE VIRTUAL TABLE x1 USING fts4;
+ INSERT INTO x1(x1) VALUES('automerge=2');
+}
+
+do_test 1.2 {
+ for {set i 0} {$i < 40} {incr i} {
+ tt 0 ; tt 1 ; tt 2 ; tt 3
+ }
+ execsql {
+ SELECT max(level) FROM x1_segdir;
+ SELECT count(*) FROM x1_segdir WHERE level=2;
+ }
+} {2 1}
+
+do_test 1.3 {
+ for {set i 0} {$i < 40} {incr i} {
+ tt 0 ; tt 1 ; tt 2 ; tt 3
+ }
+ execsql {
+ SELECT max(level) FROM x1_segdir;
+ SELECT count(*) FROM x1_segdir WHERE level=2;
+ }
+} {2 1}
+
+#-------------------------------------------------------------------------
+#
+do_execsql_test 2.1 {
+ DELETE FROM t1 WHERE rowid>16;
+ DROP TABLE IF EXISTS x1;
+ CREATE VIRTUAL TABLE x1 USING fts4;
+}
+
+db func second second
+proc second {L} {lindex $L 1}
+
+for {set tn 0} {$tn < 40} {incr tn} {
+ do_test 2.2.$tn {
+ for {set i 0} {$i < 100} {incr i} {
+ tt 0 ; tt 1 ; tt 2 ; tt 3
+ }
+ execsql { SELECT max(level) FROM x1_segdir }
+ } {1}
+}
+
+
+finish_test