Annotation of embedaddon/sqlite3/test/wal7.test, revision 1.1.1.1
1.1 misho 1: # 2011 May 16
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 testing the PRAGMA journal_size_limit when
13: # in WAL mode.
14: #
15:
16: set testdir [file dirname $argv0]
17: source $testdir/tester.tcl
18: ifcapable !wal {finish_test ; return }
19:
20: # Case 1: No size limit. Journal can get large.
21: #
22: do_test wal7-1.0 {
23: db close
24: forcedelete test.db
25: sqlite3 db test.db
26: db eval {
27: PRAGMA page_size=1024;
28: PRAGMA journal_mode=WAL;
29: PRAGMA wal_autocheckpoint=50; -- 50 pages
30: CREATE TABLE t1(x, y UNIQUE);
31: INSERT INTO t1 VALUES(1,2);
32: INSERT INTO t1 VALUES(zeroblob(200000),4);
33: CREATE TABLE t2(z);
34: DELETE FROM t1;
35: INSERT INTO t2 SELECT x FROM t1;
36: }
37: expr {[file size test.db-wal]>50*1100}
38: } 1
39: do_test wal7-1.1 {
40: db eval {PRAGMA wal_checkpoint}
41: expr {[file size test.db-wal]>50*1100}
42: } 1
43: do_test wal7-1.2 {
44: db eval {INSERT INTO t2 VALUES('hi');}
45: expr {[file size test.db-wal]>50*1100}
46: } 1
47:
48: # Case 2: Size limit at half the autocheckpoint size.
49: #
50: do_test wal7-2.0 {
51: db close
52: forcedelete test.db
53: sqlite3 db test.db
54: db eval {
55: PRAGMA page_size=1024;
56: PRAGMA journal_mode=WAL;
57: PRAGMA wal_autocheckpoint=50; -- 50 pages
58: PRAGMA journal_size_limit=25000;
59: CREATE TABLE t1(x, y UNIQUE);
60: INSERT INTO t1 VALUES(1,2);
61: INSERT INTO t1 VALUES(zeroblob(200000),4);
62: CREATE TABLE t2(z);
63: DELETE FROM t1;
64: INSERT INTO t2 VALUES(1);
65: }
66: file size test.db-wal
67: } 25000
68:
69:
70: # Case 3: Size limit of zero.
71: #
72: do_test wal7-3.0 {
73: db close
74: forcedelete test.db
75: sqlite3 db test.db
76: db eval {
77: PRAGMA page_size=1024;
78: PRAGMA journal_mode=WAL;
79: PRAGMA wal_autocheckpoint=50; -- 50 pages
80: PRAGMA journal_size_limit=0;
81: CREATE TABLE t1(x, y UNIQUE);
82: INSERT INTO t1 VALUES(1,2);
83: INSERT INTO t1 VALUES(zeroblob(200000),4);
84: CREATE TABLE t2(z);
85: DELETE FROM t1;
86: INSERT INTO t2 VALUES(1);
87: }
88: set sz [file size test.db-wal]
89: expr {$sz>0 && $sz<13700}
90: } 1
91:
92:
93: # Case 4: Size limit set before going WAL
94: #
95: do_test wal7-4.0 {
96: db close
97: forcedelete test.db
98: sqlite3 db test.db
99: db eval {
100: PRAGMA page_size=1024;
101: PRAGMA journal_size_limit=25000;
102: PRAGMA journal_mode=WAL;
103: PRAGMA wal_autocheckpoint=50; -- 50 pages
104: CREATE TABLE t1(x, y UNIQUE);
105: INSERT INTO t1 VALUES(1,2);
106: INSERT INTO t1 VALUES(zeroblob(200000),4);
107: CREATE TABLE t2(z);
108: DELETE FROM t1;
109: INSERT INTO t2 VALUES(1);
110: }
111: set sz [file size test.db-wal]
112: } 25000
113:
114:
115:
116:
117:
118: finish_test
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>