| # 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 |