Annotation of embedaddon/sqlite3/test/tkt-2d1a5c67d.test, revision 1.1
1.1 ! misho 1: # 2011 May 19
! 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. Specifically,
! 12: # it tests that ticket [2d1a5c67dfc2363e44f29d9bbd57f7331851390a] has
! 13: # been resolved.
! 14: #
! 15: #
! 16: #
! 17:
! 18: set testdir [file dirname $argv0]
! 19: source $testdir/tester.tcl
! 20: set testprefix tkt-2d1a5c67d
! 21:
! 22: ifcapable {!wal || !vtab} {finish_test; return}
! 23:
! 24: for {set ii 1} {$ii<=10} {incr ii} {
! 25: do_test tkt-2d1a5c67d.1.$ii {
! 26: db close
! 27: forcedelete test.db test.db-wal
! 28: sqlite3 db test.db
! 29: db eval "PRAGMA cache_size=$::ii"
! 30: db eval {
! 31: PRAGMA journal_mode=WAL;
! 32: CREATE TABLE t1(a,b);
! 33: CREATE INDEX t1b ON t1(b);
! 34: CREATE TABLE t2(x,y UNIQUE);
! 35: INSERT INTO t2 VALUES(3,4);
! 36: BEGIN;
! 37: INSERT INTO t1(a,b) VALUES(1,2);
! 38: SELECT 'A', * FROM t2 WHERE y=4;
! 39: SELECT 'B', * FROM t1;
! 40: COMMIT;
! 41: SELECT 'C', * FROM t1;
! 42: }
! 43: } {wal A 3 4 B 1 2 C 1 2}
! 44: }
! 45:
! 46: db close
! 47: forcedelete test.db test.db-wal
! 48: sqlite3 db test.db
! 49: register_wholenumber_module db
! 50: db eval {
! 51: PRAGMA journal_mode=WAL;
! 52: CREATE TABLE t1(a,b);
! 53: CREATE INDEX t1b ON t1(b);
! 54: CREATE TABLE t2(x,y);
! 55: CREATE VIRTUAL TABLE nums USING wholenumber;
! 56: INSERT INTO t2 SELECT value, randomblob(1000) FROM nums
! 57: WHERE value BETWEEN 1 AND 1000;
! 58: }
! 59:
! 60: for {set ii 1} {$ii<=10} {incr ii} {
! 61: do_test tkt-2d1a5c67d.2.$ii {
! 62: db eval "PRAGMA cache_size=$::ii"
! 63: db eval {
! 64: DELETE FROM t1;
! 65: BEGIN;
! 66: INSERT INTO t1(a,b) VALUES(1,2);
! 67: SELECT sum(length(y)) FROM t2;
! 68: COMMIT;
! 69: SELECT * FROM t1;
! 70: }
! 71: } {1000000 1 2}
! 72: }
! 73:
! 74: db close
! 75: sqlite3 db test.db
! 76:
! 77:
! 78: do_execsql_test 3.1 {
! 79: PRAGMA cache_size = 10;
! 80: CREATE TABLE t3(a INTEGER PRIMARY KEY, b);
! 81: CREATE TABLE t4(a);
! 82: }
! 83:
! 84: do_execsql_test 3.2 {
! 85: INSERT INTO t3 VALUES(NULL, randomblob(500));
! 86: INSERT INTO t3 SELECT NULL, b||b FROM t3; -- 2
! 87: INSERT INTO t3 SELECT NULL, b||b FROM t3; -- 4
! 88: INSERT INTO t3 SELECT NULL, b||b FROM t3; -- 8
! 89: INSERT INTO t3 SELECT NULL, b||b FROM t3; -- 16
! 90: INSERT INTO t3 SELECT NULL, b||b FROM t3; -- 32
! 91: INSERT INTO t3 SELECT NULL, b||b FROM t3; -- 64
! 92: INSERT INTO t3 SELECT NULL, b||b FROM t3; -- 128
! 93: }
! 94:
! 95: do_execsql_test 3.3 {
! 96: BEGIN;
! 97: INSERT INTO t4 VALUES('xyz');
! 98: }
! 99:
! 100: do_test 3.4 {
! 101: set blobs [list]
! 102: for {set i 1} {$i<100} {incr i} {
! 103: set b [db incrblob -readonly t3 b $i]
! 104: read $b
! 105: lappend blobs $b
! 106: }
! 107:
! 108: execsql COMMIT
! 109: execsql { SELECT * FROM t4 WHERE a = 'xyz' }
! 110: } {xyz}
! 111:
! 112: do_test 3.5 {
! 113: foreach b $blobs { close $b }
! 114: execsql { SELECT * FROM t4 WHERE a = 'xyz' }
! 115: } {xyz}
! 116:
! 117: # Check that recovery works on the WAL file.
! 118: #
! 119: forcedelete test.db2-wal test.db2
! 120: do_test 3.6 {
! 121: copy_file test.db-wal test.db2-wal
! 122: copy_file test.db test.db2
! 123: sqlite3 db2 test.db2
! 124: execsql { SELECT * FROM t4 WHERE a = 'xyz' } db2
! 125: } {xyz}
! 126:
! 127: finish_test
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>