File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / sqlite3 / test / walpersist.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 July 26
    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: #
   12: # This file contains tests for using WAL with persistent WAL file mode.
   13: #
   14: 
   15: set testdir [file dirname $argv0]
   16: source $testdir/tester.tcl
   17: source $testdir/lock_common.tcl
   18: set ::testprefix walpersist
   19: 
   20: ifcapable !wal {
   21:   finish_test
   22:   return
   23: }
   24: 
   25: do_test walpersist-1.0 {
   26:   db eval {
   27:     PRAGMA journal_mode=WAL;
   28:     CREATE TABLE t1(a);
   29:     INSERT INTO t1 VALUES(randomblob(5000));
   30:   }
   31:   file exists test.db-wal
   32: } {1}
   33: do_test walpersist-1.1 {
   34:   file exists test.db-shm
   35: } {1}
   36: do_test walpersist-1.2 {
   37:   db close
   38:   list [file exists test.db] [file exists test.db-wal] [file exists test.db-shm]
   39: } {1 0 0}
   40: do_test walpersist-1.3 {
   41:   sqlite3 db test.db
   42:   db eval {SELECT length(a) FROM t1}
   43: } {5000}
   44: do_test walpersist-1.4 {
   45:   list [file exists test.db] [file exists test.db-wal] [file exists test.db-shm]
   46: } {1 1 1}
   47: do_test walpersist-1.5 {
   48:   file_control_persist_wal db -1
   49: } {0 0}
   50: do_test walpersist-1.6 {
   51:   file_control_persist_wal db 1
   52: } {0 1}
   53: do_test walpersist-1.7 {
   54:   file_control_persist_wal db -1
   55: } {0 1}
   56: do_test walpersist-1.8 {
   57:   file_control_persist_wal db 0
   58: } {0 0}
   59: do_test walpersist-1.9 {
   60:   file_control_persist_wal db -1
   61: } {0 0}
   62: do_test walpersist-1.10 {
   63:   file_control_persist_wal db 1
   64: } {0 1}
   65: do_test walpersist-1.11 {
   66:   db close
   67:   list [file exists test.db] [file exists test.db-wal] [file exists test.db-shm]
   68: } {1 1 1}
   69: 
   70: # Make sure the journal_size_limit works to limit the size of the
   71: # persisted wal file.  In persistent-wal mode, any non-negative
   72: # journal_size_limit causes the WAL file to be truncated to zero bytes
   73: # when closing.
   74: #
   75: forcedelete test.db test.db-shm test.db-wal
   76: do_test walpersist-2.1 {
   77:   sqlite3 db test.db
   78:   db eval {
   79:     PRAGMA journal_mode=WAL;
   80:     PRAGMA wal_autocheckpoint=OFF;
   81:     PRAGMA journal_size_limit=12000;
   82:     CREATE TABLE t1(x);
   83:     INSERT INTO t1 VALUES(randomblob(50000));
   84:     UPDATE t1 SET x=randomblob(50000);
   85:   }
   86:   expr {[file size test.db-wal]>100000}
   87: } {1}
   88: do_test walpersist-2.2 {
   89:   file_control_persist_wal db 1
   90:   db close
   91:   concat [file exists test.db-wal] [file size test.db-wal]
   92: } {1 0}
   93: do_test walpersist-2.3 {
   94:   sqlite3 db test.db
   95:   execsql { PRAGMA integrity_check }
   96: } {ok}
   97: 
   98: do_test 3.1 {
   99:   catch {db close}
  100:   forcedelete test.db test.db-shm test.db-wal
  101:   sqlite3 db test.db
  102:   execsql {
  103:     PRAGMA page_size = 1024;
  104:     PRAGMA journal_mode = WAL;
  105:     PRAGMA wal_autocheckpoint=128;
  106:     PRAGMA journal_size_limit=16384;
  107:     CREATE TABLE t1(a, b, PRIMARY KEY(a, b));
  108:   }
  109: } {wal 128 16384}
  110: do_test 3.2 {
  111:   for {set i 0} {$i<200} {incr i} {
  112:     execsql { INSERT INTO t1 VALUES(randomblob(500), randomblob(500)) }
  113:   }
  114:   file_control_persist_wal db 1
  115:   db close
  116: } {}
  117: do_test walpersist-3.3 { 
  118:   file size test.db-wal 
  119: } {0}
  120: do_test walpersist-3.4 { 
  121:   sqlite3 db test.db
  122:   execsql { PRAGMA integrity_check }
  123: } {ok}
  124:  
  125: 
  126: finish_test

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>