xref: /sqlite-3.40.0/test/swarmvtab2.test (revision a5aed4b1)
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