1*a5aed4b1Sdrh# 2017-07-15 2*a5aed4b1Sdrh# 3*a5aed4b1Sdrh# The author disclaims copyright to this source code. In place of 4*a5aed4b1Sdrh# a legal notice, here is a blessing: 5*a5aed4b1Sdrh# 6*a5aed4b1Sdrh# May you do good and not evil. 7*a5aed4b1Sdrh# May you find forgiveness for yourself and forgive others. 8*a5aed4b1Sdrh# May you share freely, never taking more than you give. 9*a5aed4b1Sdrh# 10*a5aed4b1Sdrh#*********************************************************************** 11*a5aed4b1Sdrh# This file implements regression tests for SQLite library. The 12*a5aed4b1Sdrh# focus of this file is the "swarmvtab" extension 13*a5aed4b1Sdrh# 14*a5aed4b1Sdrh 15*a5aed4b1Sdrhset testdir [file dirname $argv0] 16*a5aed4b1Sdrhsource $testdir/tester.tcl 17*a5aed4b1Sdrhset testprefix swarmvtab 18*a5aed4b1Sdrh 19*a5aed4b1Sdrhifcapable !vtab { 20*a5aed4b1Sdrh finish_test 21*a5aed4b1Sdrh return 22*a5aed4b1Sdrh} 23*a5aed4b1Sdrh 24*a5aed4b1Sdrh 25*a5aed4b1Sdrhdb close 26*a5aed4b1Sdrhforeach name [glob -nocomplain test*.db] { 27*a5aed4b1Sdrh forcedelete $name 28*a5aed4b1Sdrh} 29*a5aed4b1Sdrhsqlite3 db test.db 30*a5aed4b1Sdrhload_static_extension db unionvtab 31*a5aed4b1Sdrhproc create_database {filename} { 32*a5aed4b1Sdrh sqlite3 dbx $filename 33*a5aed4b1Sdrh set num [regsub -all {[^0-9]+} $filename {}] 34*a5aed4b1Sdrh set num [string trimleft $num 0] 35*a5aed4b1Sdrh set start [expr {$num*1000}] 36*a5aed4b1Sdrh set end [expr {$start+999}] 37*a5aed4b1Sdrh dbx eval { 38*a5aed4b1Sdrh CREATE TABLE t2(a INTEGER PRIMARY KEY,b); 39*a5aed4b1Sdrh WITH RECURSIVE c(x) AS ( 40*a5aed4b1Sdrh VALUES($start) UNION ALL SELECT x+1 FROM c WHERE x<$end 41*a5aed4b1Sdrh ) 42*a5aed4b1Sdrh INSERT INTO t2(a,b) SELECT x, printf('**%05d**',x) FROM c; 43*a5aed4b1Sdrh } 44*a5aed4b1Sdrh dbx close 45*a5aed4b1Sdrh} 46*a5aed4b1Sdrhdb func create_database create_database 47*a5aed4b1Sdrhdo_execsql_test 100 { 48*a5aed4b1Sdrh CREATE TABLE t1(filename, tablename, istart, iend); 49*a5aed4b1Sdrh WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM c WHERE x<99) 50*a5aed4b1Sdrh INSERT INTO t1 SELECT printf('test%03d.db',x),'t2',x*1000,x*1000+999 FROM c; 51*a5aed4b1Sdrh CREATE VIRTUAL TABLE temp.v1 USING swarmvtab( 52*a5aed4b1Sdrh 'SELECT * FROM t1', 'create_database' 53*a5aed4b1Sdrh ); 54*a5aed4b1Sdrh} {} 55*a5aed4b1Sdrhdo_execsql_test 110 { 56*a5aed4b1Sdrh SELECT b FROM v1 WHERE a=3875; 57*a5aed4b1Sdrh} {**03875**} 58*a5aed4b1Sdrhdo_test 120 { 59*a5aed4b1Sdrh lsort [glob -nocomplain test?*.db] 60*a5aed4b1Sdrh} {test001.db test003.db} 61*a5aed4b1Sdrhdo_execsql_test 130 { 62*a5aed4b1Sdrh SELECT b FROM v1 WHERE a BETWEEN 3999 AND 4000 ORDER BY a; 63*a5aed4b1Sdrh} {**03999** **04000**} 64*a5aed4b1Sdrhdo_test 140 { 65*a5aed4b1Sdrh lsort [glob -nocomplain test?*.db] 66*a5aed4b1Sdrh} {test001.db test003.db test004.db} 67*a5aed4b1Sdrhdo_execsql_test 150 { 68*a5aed4b1Sdrh SELECT b FROM v1 WHERE a>=99998; 69*a5aed4b1Sdrh} {**99998** **99999**} 70*a5aed4b1Sdrhdo_test 160 { 71*a5aed4b1Sdrh lsort -dictionary [glob -nocomplain test?*.db] 72*a5aed4b1Sdrh} {test001.db test003.db test004.db test099.db} 73*a5aed4b1Sdrh 74*a5aed4b1Sdrhfinish_test 75