Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(312)

Side by Side Diff: third_party/sqlite/src/test/vacuum3.test

Issue 694353003: Get `gn gen` to succeed on Windows (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: remove GYP_DEFINES code Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/sqlite/src/test/vacuum2.test ('k') | third_party/sqlite/src/test/vacuum4.test » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # 2007 March 19
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 changing the database page size using a
13 # VACUUM statement.
14 #
15 # $Id: vacuum3.test,v 1.9 2008/08/26 21:07:27 drh Exp $
16
17 set testdir [file dirname $argv0]
18 source $testdir/tester.tcl
19
20 # If the VACUUM statement is disabled in the current build, skip all
21 # the tests in this file.
22 #
23 ifcapable !vacuum {
24 finish_test
25 return
26 }
27
28
29 #-------------------------------------------------------------------
30 # Test cases vacuum3-1.* convert a simple 2-page database between a
31 # few different page sizes.
32 #
33 do_test vacuum3-1.1 {
34 execsql {
35 PRAGMA auto_vacuum=OFF;
36 PRAGMA page_size = 1024;
37 CREATE TABLE t1(a, b, c);
38 INSERT INTO t1 VALUES(1, 2, 3);
39 }
40 } {}
41 do_test vacuum3-1.2 {
42 execsql { PRAGMA page_size }
43 } {1024}
44 do_test vacuum3-1.3 {
45 file size test.db
46 } {2048}
47
48 set I 4
49 foreach {request actual database} [list \
50 2048 2048 4096 \
51 1024 1024 2048 \
52 1170 1024 2048 \
53 256 1024 2048 \
54 512 512 1024 \
55 4096 4096 8192 \
56 1024 1024 2048 \
57 ] {
58 do_test vacuum3-1.$I.1 {
59 execsql "
60 PRAGMA page_size = $request;
61 VACUUM;
62 "
63 execsql { PRAGMA page_size }
64 } $actual
65 do_test vacuum3-1.$I.2 {
66 file size test.db
67 } $database
68 do_test vacuum3-1.$I.3 {
69 execsql { SELECT * FROM t1 }
70 } {1 2 3}
71 integrity_check vacuum3-1.$I.4
72
73 incr I
74 }
75
76 #-------------------------------------------------------------------
77 # Test cases vacuum3-2.* convert a simple 3-page database between a
78 # few different page sizes.
79 #
80 do_test vacuum3-2.1 {
81 execsql {
82 PRAGMA page_size = 1024;
83 VACUUM;
84 ALTER TABLE t1 ADD COLUMN d;
85 UPDATE t1 SET d = randomblob(1000);
86 }
87 file size test.db
88 } {3072}
89 do_test vacuum3-2.2 {
90 execsql { PRAGMA page_size }
91 } {1024}
92 do_test vacuum3-2.3 {
93 set blob [db one {select d from t1}]
94 string length $blob
95 } {1000}
96
97 set I 4
98 foreach {request actual database} [list \
99 2048 2048 4096 \
100 1024 1024 3072 \
101 1170 1024 3072 \
102 256 1024 3072 \
103 512 512 2048 \
104 4096 4096 8192 \
105 1024 1024 3072 \
106 ] {
107 do_test vacuum3-2.$I.1 {
108 execsql "
109 PRAGMA page_size = $request;
110 VACUUM;
111 "
112 execsql { PRAGMA page_size }
113 } $actual
114 do_test vacuum3-2.$I.2 {
115 file size test.db
116 } $database
117 do_test vacuum3-2.$I.3 {
118 execsql { SELECT * FROM t1 }
119 } [list 1 2 3 $blob]
120 integrity_check vacuum3-1.$I.4
121
122 incr I
123 }
124
125 #-------------------------------------------------------------------
126 # Test cases vacuum3-3.* converts a database large enough to include
127 # the locking page (in a test environment) between few different
128 # page sizes.
129 #
130 proc signature {} {
131 return [db eval {SELECT count(*), md5sum(a), md5sum(b), md5sum(c) FROM abc}]
132 }
133 do_test vacuum3-3.1 {
134 execsql "
135 PRAGMA page_size = 1024;
136 BEGIN;
137 CREATE TABLE abc(a PRIMARY KEY, b, c);
138 INSERT INTO abc VALUES(randomblob(100), randomblob(200), randomblob(1000));
139 INSERT INTO abc
140 SELECT randomblob(1000), randomblob(200), randomblob(100)
141 FROM abc;
142 INSERT INTO abc
143 SELECT randomblob(100), randomblob(200), randomblob(1000)
144 FROM abc;
145 INSERT INTO abc
146 SELECT randomblob(100), randomblob(200), randomblob(1000)
147 FROM abc;
148 INSERT INTO abc
149 SELECT randomblob(100), randomblob(200), randomblob(1000)
150 FROM abc;
151 INSERT INTO abc
152 SELECT randomblob(100), randomblob(200), randomblob(1000)
153 FROM abc;
154 INSERT INTO abc
155 SELECT randomblob(25), randomblob(45), randomblob(9456)
156 FROM abc;
157 INSERT INTO abc
158 SELECT randomblob(100), randomblob(200), randomblob(1000)
159 FROM abc;
160 INSERT INTO abc
161 SELECT randomblob(25), randomblob(45), randomblob(9456)
162 FROM abc;
163 COMMIT;
164 "
165 } {}
166 do_test vacuum3-3.2 {
167 execsql { PRAGMA page_size }
168 } {1024}
169
170 set ::sig [signature]
171
172 set I 3
173 foreach {request actual} [list \
174 2048 2048 \
175 1024 1024 \
176 1170 1024 \
177 256 1024 \
178 512 512 \
179 4096 4096 \
180 1024 1024 \
181 ] {
182 do_test vacuum3-3.$I.1 {
183 execsql "
184 PRAGMA page_size = $request;
185 VACUUM;
186 "
187 execsql { PRAGMA page_size }
188 } $actual
189 do_test vacuum3-3.$I.2 {
190 signature
191 } $::sig
192 integrity_check vacuum3-3.$I.3
193
194 incr I
195 }
196
197 do_test vacuum3-4.1 {
198 db close
199 file delete test.db
200 sqlite3 db test.db
201 execsql {
202 PRAGMA page_size=1024;
203 CREATE TABLE abc(a, b, c);
204 INSERT INTO abc VALUES(1, 2, 3);
205 INSERT INTO abc VALUES(4, 5, 6);
206 }
207 execsql { SELECT * FROM abc }
208 } {1 2 3 4 5 6}
209 do_test vacuum3-4.2 {
210 sqlite3 db2 test.db
211 execsql { SELECT * FROM abc } db2
212 } {1 2 3 4 5 6}
213 do_test vacuum3-4.3 {
214 execsql {
215 PRAGMA page_size = 2048;
216 VACUUM;
217 }
218 execsql { SELECT * FROM abc }
219 } {1 2 3 4 5 6}
220 do_test vacuum3-4.4 {
221 execsql { SELECT * FROM abc } db2
222 } {1 2 3 4 5 6}
223 do_test vacuum3-4.5 {
224 execsql {
225 PRAGMA page_size=16384;
226 VACUUM;
227 } db2
228 execsql { SELECT * FROM abc } db2
229 } {1 2 3 4 5 6}
230 do_test vacuum3-4.6 {
231 execsql {
232 PRAGMA page_size=1024;
233 VACUUM;
234 }
235 execsql { SELECT * FROM abc } db2
236 } {1 2 3 4 5 6}
237
238 # Unable to change the page-size of an in-memory using vacuum.
239 db2 close
240 sqlite3 db2 :memory:
241 do_test vacuum3-5.1 {
242 db2 eval {
243 CREATE TABLE t1(x);
244 INSERT INTO t1 VALUES(1234);
245 PRAGMA page_size=4096;
246 VACUUM;
247 SELECT * FROM t1;
248 }
249 } {1234}
250 do_test vacuum3-5.2 {
251 db2 eval {
252 PRAGMA page_size
253 }
254 } {1024}
255
256 set create_database_sql {
257 BEGIN;
258 CREATE TABLE t1(a, b, c);
259 INSERT INTO t1 VALUES(1, randstr(50,50), randstr(50,50));
260 INSERT INTO t1 SELECT a+2, b||'-'||rowid, c||'-'||rowid FROM t1;
261 INSERT INTO t1 SELECT a+4, b||'-'||rowid, c||'-'||rowid FROM t1;
262 INSERT INTO t1 SELECT a+8, b||'-'||rowid, c||'-'||rowid FROM t1;
263 INSERT INTO t1 SELECT a+16, b||'-'||rowid, c||'-'||rowid FROM t1;
264 INSERT INTO t1 SELECT a+32, b||'-'||rowid, c||'-'||rowid FROM t1;
265 INSERT INTO t1 SELECT a+64, b||'-'||rowid, c||'-'||rowid FROM t1;
266 INSERT INTO t1 SELECT a+128, b||'-'||rowid, c||'-'||rowid FROM t1;
267 INSERT INTO t1 VALUES(1, randstr(600,600), randstr(600,600));
268 CREATE TABLE t2 AS SELECT * FROM t1;
269 CREATE TABLE t3 AS SELECT * FROM t1;
270 COMMIT;
271 DROP TABLE t2;
272 }
273
274 do_ioerr_test vacuum3-ioerr-1 -cksum true -sqlprep "
275 PRAGMA page_size = 1024;
276 $create_database_sql
277 " -sqlbody {
278 PRAGMA page_size = 4096;
279 VACUUM;
280 }
281 do_ioerr_test vacuum3-ioerr-2 -cksum true -sqlprep "
282 PRAGMA page_size = 2048;
283 $create_database_sql
284 " -sqlbody {
285 PRAGMA page_size = 512;
286 VACUUM;
287 }
288
289 ifcapable autovacuum {
290 do_ioerr_test vacuum3-ioerr-3 -cksum true -sqlprep "
291 PRAGMA auto_vacuum = 0;
292 $create_database_sql
293 " -sqlbody {
294 PRAGMA auto_vacuum = 1;
295 VACUUM;
296 }
297 do_ioerr_test vacuum3-ioerr-4 -cksum true -sqlprep "
298 PRAGMA auto_vacuum = 1;
299 $create_database_sql
300 " -sqlbody {
301 PRAGMA auto_vacuum = 0;
302 VACUUM;
303 }
304 }
305
306 source $testdir/malloc_common.tcl
307 if {$MEMDEBUG} {
308 do_malloc_test vacuum3-malloc-1 -sqlprep {
309 PRAGMA page_size = 2048;
310 BEGIN;
311 CREATE TABLE t1(a, b, c);
312 INSERT INTO t1 VALUES(1, randstr(50,50), randstr(50,50));
313 INSERT INTO t1 SELECT a+2, b||'-'||rowid, c||'-'||rowid FROM t1;
314 INSERT INTO t1 SELECT a+4, b||'-'||rowid, c||'-'||rowid FROM t1;
315 INSERT INTO t1 SELECT a+8, b||'-'||rowid, c||'-'||rowid FROM t1;
316 INSERT INTO t1 SELECT a+16, b||'-'||rowid, c||'-'||rowid FROM t1;
317 INSERT INTO t1 SELECT a+32, b||'-'||rowid, c||'-'||rowid FROM t1;
318 INSERT INTO t1 SELECT a+64, b||'-'||rowid, c||'-'||rowid FROM t1;
319 INSERT INTO t1 SELECT a+128, b||'-'||rowid, c||'-'||rowid FROM t1;
320 INSERT INTO t1 VALUES(1, randstr(600,600), randstr(600,600));
321 CREATE TABLE t2 AS SELECT * FROM t1;
322 CREATE TABLE t3 AS SELECT * FROM t1;
323 COMMIT;
324 DROP TABLE t2;
325 } -sqlbody {
326 PRAGMA page_size = 512;
327 VACUUM;
328 }
329 do_malloc_test vacuum3-malloc-2 -sqlprep {
330 PRAGMA encoding=UTF16;
331 CREATE TABLE t1(a, b, c);
332 INSERT INTO t1 VALUES(1, 2, 3);
333 CREATE TABLE t2(x,y,z);
334 INSERT INTO t2 SELECT * FROM t1;
335 } -sqlbody {
336 VACUUM;
337 }
338 }
339
340 finish_test
OLDNEW
« no previous file with comments | « third_party/sqlite/src/test/vacuum2.test ('k') | third_party/sqlite/src/test/vacuum4.test » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698