mirror of
https://gitlab.com/cznic/sqlite.git
synced 2024-11-24 02:26:14 +00:00
76 lines
2.1 KiB
Plaintext
76 lines
2.1 KiB
Plaintext
# 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 swarmvtab2
|
|
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
|