gitlab.com/CoiaPrant/sqlite3@v1.19.1/testdata/tcl/fts4growth2.test (about) 1 # 2014 May 12 2 # 3 # The author disclaims copyright to this source code. In place of 4 # a legal notice, here is a blessing: 5 # 6 # May you do good and not evil. 7 # May you find forgiveness for yourself and forgive others. 8 # May you share freely, never taking more than you give. 9 # 10 #************************************************************************* 11 # This file implements regression tests for SQLite library. The 12 # focus of this script is testing the FTS4 module. 13 # 14 # 15 16 set testdir [file dirname $argv0] 17 source $testdir/tester.tcl 18 set testprefix fts4growth2 19 20 # If SQLITE_ENABLE_FTS3 is defined, omit this file. 21 ifcapable !fts3 { 22 finish_test 23 return 24 } 25 26 source $testdir/genesis.tcl 27 28 do_execsql_test 1.0 { CREATE TABLE t1(docid, words); } 29 fts_kjv_genesis 30 31 proc structure {} { 32 puts [ db eval {SELECT level, count(*) FROM x1_segdir GROUP BY level} ] 33 } 34 35 proc tt {val} { 36 execsql { 37 DELETE FROM x1 38 WHERE docid IN (SELECT docid FROM t1 WHERE (rowid-1)%4==$val+0); 39 } 40 execsql { 41 INSERT INTO x1(docid, content) 42 SELECT docid, words FROM t1 WHERE (rowid%4)==$val+0; 43 } 44 } 45 46 do_execsql_test 1.1 { 47 CREATE VIRTUAL TABLE x1 USING fts4; 48 INSERT INTO x1(x1) VALUES('automerge=2'); 49 } 50 51 do_test 1.2 { 52 for {set i 0} {$i < 40} {incr i} { 53 tt 0 ; tt 1 ; tt 2 ; tt 3 54 } 55 execsql { 56 SELECT max(level) FROM x1_segdir; 57 SELECT count(*) FROM x1_segdir WHERE level=2; 58 } 59 } {2 1} 60 61 do_test 1.3 { 62 for {set i 0} {$i < 40} {incr i} { 63 tt 0 ; tt 1 ; tt 2 ; tt 3 64 } 65 execsql { 66 SELECT max(level) FROM x1_segdir; 67 SELECT count(*) FROM x1_segdir WHERE level=2; 68 } 69 } {2 1} 70 71 #------------------------------------------------------------------------- 72 # 73 do_execsql_test 2.1 { 74 DELETE FROM t1 WHERE rowid>16; 75 DROP TABLE IF EXISTS x1; 76 CREATE VIRTUAL TABLE x1 USING fts4; 77 } 78 79 db func second second 80 proc second {L} {lindex $L 1} 81 82 for {set tn 0} {$tn < 40} {incr tn} { 83 do_test 2.2.$tn { 84 for {set i 0} {$i < 100} {incr i} { 85 tt 0 ; tt 1 ; tt 2 ; tt 3 86 } 87 execsql { SELECT max(level) FROM x1_segdir } 88 } {1} 89 } 90 91 92 finish_test