3 # The author disclaims copyright to this source code. In place of
4 # a legal notice, here is a blessing:
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.
10 #***********************************************************************
11 # This file implements regression tests for SQLite library. The
12 # focus of this file is testing the code in test_delete.c (the
13 # sqlite3_delete_database() API).
16 set testdir [file dirname $argv0]
17 source $testdir/tester.tcl
18 set testprefix delete_db
21 foreach f [glob -nocomplain test2*] { file delete $f }
22 foreach f [glob -nocomplain test3*] { file delete $f }
26 foreach f [glob -nocomplain test3*] { file delete $f }
27 foreach f [glob -nocomplain test2*] {
28 set p [string range $f 5 end]
29 file copy "test2$p" "test3$p"
34 lsort [glob -nocomplain test3*]
39 sqlite3 db test2.database
41 #-------------------------------------------------------------------------
45 # 1.3: Multiplexor with journal file.
46 # 1.4: Multiplexor with wal file.
48 # 2.* are a copy of 1.* with the multiplexor enabled.
55 CREATE TABLE t1(x, y);
57 INSERT INTO t1 VALUES(1, 2);
61 } {test3.database test3.database-journal}
64 sqlite3_delete_database test3.database
71 PRAGMA journal_mode = wal;
72 INSERT INTO t1 VALUES(3, 4);
76 } {test3.database test3.database-shm test3.database-wal}
78 sqlite3_delete_database test3.database
84 sqlite3_multiplex_initialize "" 0
85 sqlite3 db test2.database -vfs multiplex
86 sqlite3_multiplex_control db "main" chunk_size 32768
89 execsql { PRAGMA auto_vacuum = 0; }
91 CREATE TABLE x1(a, b);
92 WITH s(i) AS ( VALUES(1) UNION ALL SELECT i+1 FROM s WHERE i<1000 )
93 INSERT INTO x1 SELECT randomblob(100), randomblob(100) FROM s;
95 UPDATE x1 SET a=randomblob(101)
100 test3.database test3.database-journal test3.database001
101 test3.database002 test3.database003
104 sqlite3_delete_database test3.database
112 PRAGMA journal_mode = wal;
113 UPDATE x1 SET a=randomblob(102)
118 test3.database test3.database-shm test3.database-wal test3.database001
119 test3.database002 test3.database003
122 sqlite3_delete_database test3.database
127 ifcapable 8_3_names {
130 sqlite3 db file:test2.db?8_3_names=1 -uri 1
134 CREATE TABLE t1(x, y);
136 INSERT INTO t1 VALUES(1, 2);
140 } {test3.db test3.nal}
143 sqlite3_delete_database test3.db
150 PRAGMA journal_mode = wal;
151 INSERT INTO t1 VALUES(3, 4);
155 } {test3.db test3.shm test3.wal}
157 sqlite3_delete_database test3.db
164 sqlite3_multiplex_initialize "" 0
165 sqlite3 db file:test2.db?8_3_names=1 -uri 1 -vfs multiplex
166 sqlite3_multiplex_control db "main" chunk_size 32768
169 execsql { PRAGMA auto_vacuum = 0; }
171 CREATE TABLE x1(a, b);
172 WITH s(i) AS ( VALUES(1) UNION ALL SELECT i+1 FROM s WHERE i<1000 )
173 INSERT INTO x1 SELECT randomblob(100), randomblob(100) FROM s;
175 UPDATE x1 SET a=randomblob(101)
180 test3.001 test3.002 test3.003 test3.db test3.nal
183 sqlite3_delete_database test3.db
191 PRAGMA journal_mode = wal;
192 UPDATE x1 SET a=randomblob(102)
197 test3.001 test3.002 test3.003 test3.db test3.db-shm test3.wal
200 sqlite3_delete_database test3.db
207 sqlite3_multiplex_shutdown
211 sqlite3_delete_database dir2.db
214 sqlite3_delete_database dir2.db/test.db