wasCSharpSQLite – Blame information for rev

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 # 2011 May 17
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 # Test cases for the SQLITE_ENABLE_8_3_NAMES feature that forces all
13 # filename extensions to be limited to 3 characters. Some embedded
14 # systems need this to work around microsoft FAT patents, but this
15 # feature should be disabled on most deployments.
16 #
17  
18 set testdir [file dirname $argv0]
19 source $testdir/tester.tcl
20 ifcapable !8_3_names {
21 finish_test
22 return
23 }
24  
25 db close
26 sqlite3_shutdown
27 sqlite3_config_uri 1
28  
29 do_test 8_3_names-1.0 {
30 forcedelete test.db test.nal test.db-journal
31 sqlite3 db test.db
32 db eval {
33 PRAGMA cache_size=10;
34 CREATE TABLE t1(x);
35 INSERT INTO t1 VALUES(randomblob(20000));
36 BEGIN;
37 DELETE FROM t1;
38 INSERT INTO t1 VALUES(randomblob(15000));
39 }
40 file exists test.db-journal
41 } 1
42 do_test 8_3_names-1.1 {
43 file exists test.nal
44 } 0
45 do_test 8_3_names-1.2 {
46 db eval {
47 ROLLBACK;
48 SELECT length(x) FROM t1
49 }
50 } 20000
51  
52 db close
53 do_test 8_3_names-2.0 {
54 forcedelete test.db test.nal test.db-journal
55 sqlite3 db file:./test.db?8_3_names=1
56 db eval {
57 PRAGMA cache_size=10;
58 CREATE TABLE t1(x);
59 INSERT INTO t1 VALUES(randomblob(20000));
60 BEGIN;
61 DELETE FROM t1;
62 INSERT INTO t1 VALUES(randomblob(15000));
63 }
64 file exists test.db-journal
65 } 0
66 do_test 8_3_names-2.1 {
67 file exists test.nal
68 } 1
69 forcedelete test2.db test2.nal test2.db-journal
70 file copy test.db test2.db
71 file copy test.nal test2.nal
72 do_test 8_3_names-2.2 {
73 db eval {
74 COMMIT;
75 SELECT length(x) FROM t1
76 }
77 } 15000
78 do_test 8_3_names-2.3 {
79 sqlite3 db2 file:./test2.db?8_3_names=1
80 db2 eval {
81 PRAGMA integrity_check;
82 SELECT length(x) FROM t1;
83 }
84 } {ok 20000}
85  
86 db close
87 do_test 8_3_names-3.0 {
88 forcedelete test.db test.nal test.db-journal
89 sqlite3 db file:./test.db?8_3_names=0
90 db eval {
91 PRAGMA cache_size=10;
92 CREATE TABLE t1(x);
93 INSERT INTO t1 VALUES(randomblob(20000));
94 BEGIN;
95 DELETE FROM t1;
96 INSERT INTO t1 VALUES(randomblob(15000));
97 }
98 file exists test.db-journal
99 } 1
100 do_test 8_3_names-3.1 {
101 file exists test.nal
102 } 0
103 forcedelete test2.db test2.nal test2.db-journal
104 file copy test.db test2.db
105 file copy test.db-journal test2.db-journal
106 do_test 8_3_names-3.2 {
107 db eval {
108 COMMIT;
109 SELECT length(x) FROM t1
110 }
111 } 15000
112 do_test 8_3_names-3.3 {
113 sqlite3 db2 file:./test2.db?8_3_names=0
114 db2 eval {
115 PRAGMA integrity_check;
116 SELECT length(x) FROM t1;
117 }
118 } {ok 20000}
119  
120 ##########################################################################
121 # Master journals.
122 #
123 db close
124 forcedelete test.db test2.db
125 do_test 8_3_names-4.0 {
126 sqlite3 db file:./test.db?8_3_names=1
127 db eval {
128 CREATE TABLE t1(x);
129 INSERT INTO t1 VALUES(1);
130 ATTACH 'file:./test2.db?8_3_names=1' AS db2;
131 CREATE TABLE db2.t2(y);
132 INSERT INTO t2 VALUES(2);
133 BEGIN;
134 INSERT INTO t1 VALUES(3);
135 INSERT INTO t2 VALUES(4);
136 COMMIT;
137 SELECT * FROM t1, t2 ORDER BY x, y
138 }
139 } {1 2 1 4 3 2 3 4}
140  
141  
142 ##########################################################################
143 # WAL mode.
144 #
145 ifcapable !wal {
146 finish_test
147 return
148 }
149 db close
150 forcedelete test.db
151 do_test 8_3_names-5.0 {
152 sqlite3 db file:./test.db?8_3_names=1
153 register_wholenumber_module db
154 db eval {
155 PRAGMA journal_mode=WAL;
156 CREATE TABLE t1(x);
157 CREATE VIRTUAL TABLE nums USING wholenumber;
158 INSERT INTO t1 SELECT value FROM nums WHERE value BETWEEN 1 AND 1000;
159 BEGIN;
160 UPDATE t1 SET x=x*2;
161 }
162 sqlite3 db2 file:./test.db?8_3_names=1
163 register_wholenumber_module db2
164 db2 eval {
165 BEGIN;
166 SELECT sum(x) FROM t1;
167 }
168 } {500500}
169  
170 do_test 8_3_names-5.1 {
171 file exists test.db-wal
172 } 0
173 do_test 8_3_names-5.2 {
174 file exists test.wal
175 } 1
176 do_test 8_3_names-5.3 {
177 file exists test.db-shm
178 } 0
179 do_test 8_3_names-5.4 {
180 file exists test.shm
181 } 1
182  
183  
184 do_test 8_3_names-5.5 {
185 db eval {
186 COMMIT;
187 SELECT sum(x) FROM t1;
188 }
189 } {1001000}
190 do_test 8_3_names-5.6 {
191 db2 eval {
192 SELECT sum(x) FROM t1;
193 }
194 } {500500}
195  
196  
197 finish_test