gitlab.com/CoiaPrant/sqlite3@v1.19.1/testdata/tcl/swarmvtab2.test (about)

     1  # 2017-07-15
     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 file is the "swarmvtab" extension
    13  #
    14  
    15  set testdir [file dirname $argv0]
    16  source $testdir/tester.tcl
    17  set testprefix swarmvtab2
    18  do_not_use_codec
    19  
    20  ifcapable !vtab {
    21    finish_test
    22    return
    23  }
    24  
    25  
    26  db close
    27  foreach name [glob -nocomplain test*.db] {
    28    forcedelete $name
    29  }
    30  sqlite3 db test.db
    31  load_static_extension db unionvtab
    32  proc create_database {filename} {
    33    sqlite3 dbx $filename
    34    set num [regsub -all {[^0-9]+} $filename {}]
    35    set num [string trimleft $num 0]
    36    set start [expr {$num*1000}]
    37    set end [expr {$start+999}]
    38    dbx eval {
    39      CREATE TABLE t2(a INTEGER PRIMARY KEY,b);
    40      WITH RECURSIVE c(x) AS (
    41        VALUES($start) UNION ALL SELECT x+1 FROM c WHERE x<$end
    42      )
    43      INSERT INTO t2(a,b) SELECT x, printf('**%05d**',x) FROM c;
    44    }
    45    dbx close
    46  }
    47  db func create_database create_database
    48  do_execsql_test 100 {
    49    CREATE TABLE t1(filename, tablename, istart, iend);
    50    WITH RECURSIVE c(x) AS (VALUES(1) UNION ALL SELECT x+1 FROM c WHERE x<99)
    51    INSERT INTO t1 SELECT printf('test%03d.db',x),'t2',x*1000,x*1000+999 FROM c;
    52    CREATE VIRTUAL TABLE temp.v1 USING swarmvtab(
    53      'SELECT * FROM t1', 'create_database'
    54    );
    55  } {}
    56  do_execsql_test 110 {
    57    SELECT b FROM v1 WHERE a=3875;
    58  } {**03875**}
    59  do_test 120 {
    60    lsort [glob -nocomplain test?*.db]
    61  } {test001.db test003.db}
    62  do_execsql_test 130 {
    63    SELECT b FROM v1 WHERE a BETWEEN 3999 AND 4000 ORDER BY a;
    64  } {**03999** **04000**}
    65  do_test 140 {
    66    lsort [glob -nocomplain test?*.db]
    67  } {test001.db test003.db test004.db}
    68  do_execsql_test 150 {
    69    SELECT b FROM v1 WHERE a>=99998;
    70  } {**99998** **99999**}
    71  do_test 160 {
    72    lsort -dictionary [glob -nocomplain test?*.db]
    73  } {test001.db test003.db test004.db test099.db}
    74  
    75  finish_test