OLD | NEW |
| (Empty) |
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 | |
OLD | NEW |