CoolFace
Modelpublic

AryaWu/sqlite

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
tkt-2d1a5c67d.test130 linesDownload Raw Back to test
1# 2011 May 192#3# The author disclaims copyright to this source code.  In place of4# 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. Specifically,12# it tests that ticket [2d1a5c67dfc2363e44f29d9bbd57f7331851390a] has13# been resolved.14#15# 16#17 18set testdir [file dirname $argv0]19source $testdir/tester.tcl20set testprefix tkt-2d1a5c67d21 22ifcapable {!vtab || !incrblob} {finish_test; return}23if {[wal_is_capable]==0} {finish_test; return}24 25for {set ii 1} {$ii<=10} {incr ii} {26  do_test tkt-2d1a5c67d.1.$ii {27    db close28    forcedelete test.db test.db-wal29    sqlite3 db test.db30    db eval "PRAGMA cache_size=$::ii"31    db eval {32      PRAGMA journal_mode=WAL;33      CREATE TABLE t1(a,b);34      CREATE INDEX t1b ON t1(b);35      CREATE TABLE t2(x,y UNIQUE);36      INSERT INTO t2 VALUES(3,4);37      BEGIN;38      INSERT INTO t1(a,b) VALUES(1,2);39      SELECT 'A', * FROM t2 WHERE y=4;40      SELECT 'B', * FROM t1;41      COMMIT;42      SELECT 'C', * FROM t1;43    }44  } {wal A 3 4 B 1 2 C 1 2}45}46 47db close48forcedelete test.db test.db-wal49sqlite3 db test.db50load_static_extension db wholenumber51db eval {52  PRAGMA journal_mode=WAL;53  CREATE TABLE t1(a,b);54  CREATE INDEX t1b ON t1(b);55  CREATE TABLE t2(x,y);56  CREATE VIRTUAL TABLE nums USING wholenumber;57  INSERT INTO t2 SELECT value, randomblob(1000) FROM nums58                 WHERE value BETWEEN 1 AND 1000;59}60 61for {set ii 1} {$ii<=10} {incr ii} {62  do_test tkt-2d1a5c67d.2.$ii {63    db eval "PRAGMA cache_size=$::ii"64    db eval {65      DELETE FROM t1;66      BEGIN;67      INSERT INTO t1(a,b) VALUES(1,2);68      SELECT sum(length(y)) FROM t2;69      COMMIT;70      SELECT * FROM t1;71    }72  } {1000000 1 2}73}74 75db close76sqlite3 db test.db77 78 79do_execsql_test 3.1 {80  PRAGMA cache_size = 10;81  CREATE TABLE t3(a INTEGER PRIMARY KEY, b);82  CREATE TABLE t4(a);83}84 85do_execsql_test 3.2 {86  INSERT INTO t3 VALUES(NULL, randomblob(500));87  INSERT INTO t3 SELECT NULL, b||b FROM t3;     -- 288  INSERT INTO t3 SELECT NULL, b||b FROM t3;     -- 489  INSERT INTO t3 SELECT NULL, b||b FROM t3;     -- 890  INSERT INTO t3 SELECT NULL, b||b FROM t3;     -- 1691  INSERT INTO t3 SELECT NULL, b||b FROM t3;     -- 3292  INSERT INTO t3 SELECT NULL, b||b FROM t3;     -- 6493  INSERT INTO t3 SELECT NULL, b||b FROM t3;     -- 12894}95 96do_execsql_test 3.3 {97  BEGIN;98    INSERT INTO t4 VALUES('xyz');99}100 101do_test 3.4 {102  set blobs [list]103  for {set i 1} {$i<100} {incr i} {104    set b [db incrblob -readonly t3 b $i]105    fconfigure $b -translation binary106    read $b107    lappend blobs $b108  }109 110  execsql COMMIT111  execsql { SELECT * FROM t4 WHERE a = 'xyz' }112} {xyz}113 114do_test 3.5 {115  foreach b $blobs { close $b }116  execsql { SELECT * FROM t4 WHERE a = 'xyz' }117} {xyz}118 119# Check that recovery works on the WAL file.120#121forcedelete test.db2-wal test.db2122do_test 3.6 {123  copy_file test.db-wal test.db2-wal124  copy_file test.db test.db2125  sqlite3 db2 test.db2126  execsql { SELECT * FROM t4 WHERE a = 'xyz' } db2127} {xyz}128 129finish_test130