File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / test / tkt-2d1a5c67d.test
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 17:04:16 2012 UTC (12 years, 10 months ago) by misho
Branches: sqlite3, MAIN
CVS tags: v3_7_10, HEAD
sqlite3

    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>