Annotation of embedaddon/sqlite3/test/8_3_names.test, revision 1.1.1.1
1.1 misho 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: copy_file test.db test2.db
71: copy_file 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: copy_file test.db test2.db
105: copy_file 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
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>