# 2017-07-15 # # 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 file is the "swarmvtab" extension # set testdir [file dirname $argv0] source $testdir/tester.tcl set testprefix swarmvtab do_not_use_codec ifcapable !vtab { finish_test return } db close foreach name [glob -nocomplain test*.db] { forcedelete $name } sqlite3 db test.db load_static_extension db unionvtab proc create_database {filename} { sqlite3 dbx $filename set num [regsub -all {[^0-9]+} $filename {}] set num [string trimleft $num 0] set start [expr {$num*1000}] set end [expr {$start+999}] dbx eval { CREATE TABLE t2(a INTEGER PRIMARY KEY,b); WITH RECURSIVE c(x) AS ( VALUES($start) UNION ALL SELECT x+1 FROM c WHERE x<$end ) INSERT INTO t2(a,b) SELECT x, printf('**%05d**',x) FROM c; } dbx close } db func create_database create_database do_execsql_test 100 { CREATE TABLE t1(filename, tablename, istart, iend); WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM c WHERE x<99) INSERT INTO t1 SELECT printf('test%03d.db',x),'t2',x*1000,x*1000+999 FROM c; CREATE VIRTUAL TABLE temp.v1 USING swarmvtab( 'SELECT * FROM t1', 'create_database' ); } {} do_execsql_test 110 { SELECT b FROM v1 WHERE a=3875; } {**03875**} do_test 120 { lsort [glob -nocomplain test?*.db] } {test001.db test003.db} do_execsql_test 130 { SELECT b FROM v1 WHERE a BETWEEN 3999 AND 4000 ORDER BY a; } {**03999** **04000**} do_test 140 { lsort [glob -nocomplain test?*.db] } {test001.db test003.db test004.db} do_execsql_test 150 { SELECT b FROM v1 WHERE a>=99998; } {**99998** **99999**} do_test 160 { lsort -dictionary [glob -nocomplain test?*.db] } {test001.db test003.db test004.db test099.db} finish_test