blob: 7062ae0d51bffcca1ee2f2829713ce8568df207b [file] [log] [blame]
drh3f5bc382013-04-06 13:09:11 +00001/*
2** This script sets up five different tasks all writing and updating
3** the database at the same time, but each in its own table.
4*/
drh4c5298f2013-04-10 12:01:21 +00005--task 1 build-t1
drh3f5bc382013-04-06 13:09:11 +00006 DROP TABLE IF EXISTS t1;
7 CREATE TABLE t1(a INTEGER PRIMARY KEY, b);
8 --sleep 1
9 INSERT INTO t1 VALUES(1, randomblob(2000));
10 INSERT INTO t1 VALUES(2, randomblob(1000));
11 --sleep 1
12 INSERT INTO t1 SELECT a+2, randomblob(1500) FROM t1;
13 INSERT INTO t1 SELECT a+4, randomblob(1500) FROM t1;
14 INSERT INTO t1 SELECT a+8, randomblob(1500) FROM t1;
15 --sleep 1
16 INSERT INTO t1 SELECT a+16, randomblob(1500) FROM t1;
17 --sleep 1
18 INSERT INTO t1 SELECT a+32, randomblob(1500) FROM t1;
19 SELECT count(*) FROM t1;
20 --match 64
21 SELECT avg(length(b)) FROM t1;
22 --match 1500.0
23 --sleep 2
24 UPDATE t1 SET b='x'||a||'y';
drh4c275b12013-05-17 12:52:58 +000025 SELECT sum(length(b)) FROM t1;
drh3f5bc382013-04-06 13:09:11 +000026 --match 247
drh023dd902013-04-08 17:57:26 +000027 SELECT a FROM t1 WHERE b='x17y';
28 --match 17
29 CREATE INDEX t1b ON t1(b);
30 SELECT a FROM t1 WHERE b='x17y';
31 --match 17
32 SELECT a FROM t1 WHERE b GLOB 'x2?y' ORDER BY b DESC LIMIT 5;
33 --match 29 28 27 26 25
drh3f5bc382013-04-06 13:09:11 +000034--end
35
36
drh4c5298f2013-04-10 12:01:21 +000037--task 2 build-t2
drh3f5bc382013-04-06 13:09:11 +000038 DROP TABLE IF EXISTS t2;
39 CREATE TABLE t2(a INTEGER PRIMARY KEY, b);
40 --sleep 1
41 INSERT INTO t2 VALUES(1, randomblob(2000));
42 INSERT INTO t2 VALUES(2, randomblob(1000));
43 --sleep 1
44 INSERT INTO t2 SELECT a+2, randomblob(1500) FROM t2;
45 INSERT INTO t2 SELECT a+4, randomblob(1500) FROM t2;
46 INSERT INTO t2 SELECT a+8, randomblob(1500) FROM t2;
47 --sleep 1
48 INSERT INTO t2 SELECT a+16, randomblob(1500) FROM t2;
49 --sleep 1
50 INSERT INTO t2 SELECT a+32, randomblob(1500) FROM t2;
51 SELECT count(*) FROM t2;
52 --match 64
53 SELECT avg(length(b)) FROM t2;
54 --match 1500.0
55 --sleep 2
56 UPDATE t2 SET b='x'||a||'y';
drh4c275b12013-05-17 12:52:58 +000057 SELECT sum(length(b)) FROM t2;
drh3f5bc382013-04-06 13:09:11 +000058 --match 247
drh023dd902013-04-08 17:57:26 +000059 SELECT a FROM t2 WHERE b='x17y';
60 --match 17
61 CREATE INDEX t2b ON t2(b);
62 SELECT a FROM t2 WHERE b='x17y';
63 --match 17
64 SELECT a FROM t2 WHERE b GLOB 'x2?y' ORDER BY b DESC LIMIT 5;
65 --match 29 28 27 26 25
drh3f5bc382013-04-06 13:09:11 +000066--end
67
drh4c5298f2013-04-10 12:01:21 +000068--task 3 build-t3
drh3f5bc382013-04-06 13:09:11 +000069 DROP TABLE IF EXISTS t3;
70 CREATE TABLE t3(a INTEGER PRIMARY KEY, b);
71 --sleep 1
72 INSERT INTO t3 VALUES(1, randomblob(2000));
73 INSERT INTO t3 VALUES(2, randomblob(1000));
74 --sleep 1
75 INSERT INTO t3 SELECT a+2, randomblob(1500) FROM t3;
76 INSERT INTO t3 SELECT a+4, randomblob(1500) FROM t3;
77 INSERT INTO t3 SELECT a+8, randomblob(1500) FROM t3;
78 --sleep 1
79 INSERT INTO t3 SELECT a+16, randomblob(1500) FROM t3;
80 --sleep 1
81 INSERT INTO t3 SELECT a+32, randomblob(1500) FROM t3;
82 SELECT count(*) FROM t3;
83 --match 64
84 SELECT avg(length(b)) FROM t3;
85 --match 1500.0
86 --sleep 2
87 UPDATE t3 SET b='x'||a||'y';
drh4c275b12013-05-17 12:52:58 +000088 SELECT sum(length(b)) FROM t3;
drh3f5bc382013-04-06 13:09:11 +000089 --match 247
drh023dd902013-04-08 17:57:26 +000090 SELECT a FROM t3 WHERE b='x17y';
91 --match 17
92 CREATE INDEX t3b ON t3(b);
93 SELECT a FROM t3 WHERE b='x17y';
94 --match 17
95 SELECT a FROM t3 WHERE b GLOB 'x2?y' ORDER BY b DESC LIMIT 5;
96 --match 29 28 27 26 25
drh3f5bc382013-04-06 13:09:11 +000097--end
98
drh4c5298f2013-04-10 12:01:21 +000099--task 4 build-t4
drh3f5bc382013-04-06 13:09:11 +0000100 DROP TABLE IF EXISTS t4;
101 CREATE TABLE t4(a INTEGER PRIMARY KEY, b);
102 --sleep 1
103 INSERT INTO t4 VALUES(1, randomblob(2000));
104 INSERT INTO t4 VALUES(2, randomblob(1000));
105 --sleep 1
106 INSERT INTO t4 SELECT a+2, randomblob(1500) FROM t4;
107 INSERT INTO t4 SELECT a+4, randomblob(1500) FROM t4;
108 INSERT INTO t4 SELECT a+8, randomblob(1500) FROM t4;
109 --sleep 1
110 INSERT INTO t4 SELECT a+16, randomblob(1500) FROM t4;
111 --sleep 1
112 INSERT INTO t4 SELECT a+32, randomblob(1500) FROM t4;
113 SELECT count(*) FROM t4;
114 --match 64
115 SELECT avg(length(b)) FROM t4;
116 --match 1500.0
117 --sleep 2
118 UPDATE t4 SET b='x'||a||'y';
drh4c275b12013-05-17 12:52:58 +0000119 SELECT sum(length(b)) FROM t4;
drh3f5bc382013-04-06 13:09:11 +0000120 --match 247
drh023dd902013-04-08 17:57:26 +0000121 SELECT a FROM t4 WHERE b='x17y';
122 --match 17
123 CREATE INDEX t4b ON t4(b);
124 SELECT a FROM t4 WHERE b='x17y';
125 --match 17
126 SELECT a FROM t4 WHERE b GLOB 'x2?y' ORDER BY b DESC LIMIT 5;
127 --match 29 28 27 26 25
drh3f5bc382013-04-06 13:09:11 +0000128--end
129
drh4c5298f2013-04-10 12:01:21 +0000130--task 5 build-t5
drh3f5bc382013-04-06 13:09:11 +0000131 DROP TABLE IF EXISTS t5;
132 CREATE TABLE t5(a INTEGER PRIMARY KEY, b);
133 --sleep 1
134 INSERT INTO t5 VALUES(1, randomblob(2000));
135 INSERT INTO t5 VALUES(2, randomblob(1000));
136 --sleep 1
137 INSERT INTO t5 SELECT a+2, randomblob(1500) FROM t5;
138 INSERT INTO t5 SELECT a+4, randomblob(1500) FROM t5;
139 INSERT INTO t5 SELECT a+8, randomblob(1500) FROM t5;
140 --sleep 1
141 INSERT INTO t5 SELECT a+16, randomblob(1500) FROM t5;
142 --sleep 1
143 INSERT INTO t5 SELECT a+32, randomblob(1500) FROM t5;
144 SELECT count(*) FROM t5;
145 --match 64
146 SELECT avg(length(b)) FROM t5;
147 --match 1500.0
148 --sleep 2
149 UPDATE t5 SET b='x'||a||'y';
drh4c275b12013-05-17 12:52:58 +0000150 SELECT sum(length(b)) FROM t5;
drh3f5bc382013-04-06 13:09:11 +0000151 --match 247
drh023dd902013-04-08 17:57:26 +0000152 SELECT a FROM t5 WHERE b='x17y';
153 --match 17
154 CREATE INDEX t5b ON t5(b);
155 SELECT a FROM t5 WHERE b='x17y';
156 --match 17
157 SELECT a FROM t5 WHERE b GLOB 'x2?y' ORDER BY b DESC LIMIT 5;
158 --match 29 28 27 26 25
drh3f5bc382013-04-06 13:09:11 +0000159--end
160
161--wait all
drh4c275b12013-05-17 12:52:58 +0000162SELECT count(*), sum(length(b)) FROM t1;
drh3f5bc382013-04-06 13:09:11 +0000163--match 64 247
drh4c275b12013-05-17 12:52:58 +0000164SELECT count(*), sum(length(b)) FROM t2;
drh3f5bc382013-04-06 13:09:11 +0000165--match 64 247
drh4c275b12013-05-17 12:52:58 +0000166SELECT count(*), sum(length(b)) FROM t3;
drh3f5bc382013-04-06 13:09:11 +0000167--match 64 247
drh4c275b12013-05-17 12:52:58 +0000168SELECT count(*), sum(length(b)) FROM t4;
drh3f5bc382013-04-06 13:09:11 +0000169--match 64 247
drh4c275b12013-05-17 12:52:58 +0000170SELECT count(*), sum(length(b)) FROM t5;
drh3f5bc382013-04-06 13:09:11 +0000171--match 64 247
drh023dd902013-04-08 17:57:26 +0000172
173--task 1
174 SELECT t1.a FROM t1, t2
175 WHERE t2.b GLOB 'x3?y' AND t1.b=('x'||(t2.a+3)||'y')
176 ORDER BY t1.a LIMIT 4
177 --match 33 34 35 36
178 SELECT t3.a FROM t3, t4
179 WHERE t4.b GLOB 'x4?y' AND t3.b=('x'||(t4.a+5)||'y')
180 ORDER BY t3.a LIMIT 7
181 --match 45 46 47 48 49 50 51
182--end
183--task 5
184 SELECT t1.a FROM t1, t2
185 WHERE t2.b GLOB 'x3?y' AND t1.b=('x'||(t2.a+3)||'y')
186 ORDER BY t1.a LIMIT 4
187 --match 33 34 35 36
188 SELECT t3.a FROM t3, t4
189 WHERE t4.b GLOB 'x4?y' AND t3.b=('x'||(t4.a+5)||'y')
190 ORDER BY t3.a LIMIT 7
191 --match 45 46 47 48 49 50 51
192--end
193--task 3
194 SELECT t1.a FROM t1, t2
195 WHERE t2.b GLOB 'x3?y' AND t1.b=('x'||(t2.a+3)||'y')
196 ORDER BY t1.a LIMIT 4
197 --match 33 34 35 36
198 SELECT t3.a FROM t3, t4
199 WHERE t4.b GLOB 'x4?y' AND t3.b=('x'||(t4.a+5)||'y')
200 ORDER BY t3.a LIMIT 7
201 --match 45 46 47 48 49 50 51
202--end
203--task 2
204 SELECT t1.a FROM t1, t2
205 WHERE t2.b GLOB 'x3?y' AND t1.b=('x'||(t2.a+3)||'y')
206 ORDER BY t1.a LIMIT 4
207 --match 33 34 35 36
208 SELECT t3.a FROM t3, t4
209 WHERE t4.b GLOB 'x4?y' AND t3.b=('x'||(t4.a+5)||'y')
210 ORDER BY t3.a LIMIT 7
211 --match 45 46 47 48 49 50 51
212--end
213--task 4
214 SELECT t1.a FROM t1, t2
215 WHERE t2.b GLOB 'x3?y' AND t1.b=('x'||(t2.a+3)||'y')
216 ORDER BY t1.a LIMIT 4
217 --match 33 34 35 36
218 SELECT t3.a FROM t3, t4
219 WHERE t4.b GLOB 'x4?y' AND t3.b=('x'||(t4.a+5)||'y')
220 ORDER BY t3.a LIMIT 7
221 --match 45 46 47 48 49 50 51
222--end
223--wait all
224
225--task 5
226 DROP INDEX t5b;
227 --sleep 5
drh7de96f72013-04-09 20:04:09 +0000228 PRAGMA integrity_check(10);
drh023dd902013-04-08 17:57:26 +0000229 --match ok
230 CREATE INDEX t5b ON t5(b DESC);
231--end
232--task 3
233 DROP INDEX t3b;
234 --sleep 5
drh7de96f72013-04-09 20:04:09 +0000235 PRAGMA integrity_check(10);
drh023dd902013-04-08 17:57:26 +0000236 --match ok
237 CREATE INDEX t3b ON t3(b DESC);
238--end
239--task 1
240 DROP INDEX t1b;
241 --sleep 5
drh7de96f72013-04-09 20:04:09 +0000242 PRAGMA integrity_check(10);
drh023dd902013-04-08 17:57:26 +0000243 --match ok
244 CREATE INDEX t1b ON t1(b DESC);
245--end
246--task 2
247 DROP INDEX t2b;
248 --sleep 5
drh7de96f72013-04-09 20:04:09 +0000249 PRAGMA integrity_check(10);
drh023dd902013-04-08 17:57:26 +0000250 --match ok
251 CREATE INDEX t2b ON t2(b DESC);
252--end
253--task 4
254 DROP INDEX t4b;
255 --sleep 5
drh7de96f72013-04-09 20:04:09 +0000256 PRAGMA integrity_check(10);
drh023dd902013-04-08 17:57:26 +0000257 --match ok
258 CREATE INDEX t4b ON t4(b DESC);
259--end
260--wait all
261
262--task 1
263 SELECT t1.a FROM t1, t2
264 WHERE t2.b GLOB 'x3?y' AND t1.b=('x'||(t2.a+3)||'y')
265 ORDER BY t1.a LIMIT 4
266 --match 33 34 35 36
267 SELECT t3.a FROM t3, t4
268 WHERE t4.b GLOB 'x4?y' AND t3.b=('x'||(t4.a+5)||'y')
269 ORDER BY t3.a LIMIT 7
270 --match 45 46 47 48 49 50 51
271--end
272--task 5
273 SELECT t1.a FROM t1, t2
274 WHERE t2.b GLOB 'x3?y' AND t1.b=('x'||(t2.a+3)||'y')
275 ORDER BY t1.a LIMIT 4
276 --match 33 34 35 36
277 SELECT t3.a FROM t3, t4
278 WHERE t4.b GLOB 'x4?y' AND t3.b=('x'||(t4.a+5)||'y')
279 ORDER BY t3.a LIMIT 7
280 --match 45 46 47 48 49 50 51
281--end
282--task 3
283 SELECT t1.a FROM t1, t2
284 WHERE t2.b GLOB 'x3?y' AND t1.b=('x'||(t2.a+3)||'y')
285 ORDER BY t1.a LIMIT 4
286 --match 33 34 35 36
287 SELECT t3.a FROM t3, t4
288 WHERE t4.b GLOB 'x4?y' AND t3.b=('x'||(t4.a+5)||'y')
289 ORDER BY t3.a LIMIT 7
290 --match 45 46 47 48 49 50 51
291--end
292--task 2
293 SELECT t1.a FROM t1, t2
294 WHERE t2.b GLOB 'x3?y' AND t1.b=('x'||(t2.a+3)||'y')
295 ORDER BY t1.a LIMIT 4
296 --match 33 34 35 36
297 SELECT t3.a FROM t3, t4
298 WHERE t4.b GLOB 'x4?y' AND t3.b=('x'||(t4.a+5)||'y')
299 ORDER BY t3.a LIMIT 7
300 --match 45 46 47 48 49 50 51
301--end
302--task 4
303 SELECT t1.a FROM t1, t2
304 WHERE t2.b GLOB 'x3?y' AND t1.b=('x'||(t2.a+3)||'y')
305 ORDER BY t1.a LIMIT 4
306 --match 33 34 35 36
307 SELECT t3.a FROM t3, t4
308 WHERE t4.b GLOB 'x4?y' AND t3.b=('x'||(t4.a+5)||'y')
309 ORDER BY t3.a LIMIT 7
310 --match 45 46 47 48 49 50 51
311--end
312--wait all
313
314VACUUM;
drh7de96f72013-04-09 20:04:09 +0000315PRAGMA integrity_check(10);
drh023dd902013-04-08 17:57:26 +0000316--match ok
317
318--task 1
319 UPDATE t1 SET b=randomblob(20000);
320 --sleep 5
321 UPDATE t1 SET b='x'||a||'y';
322 SELECT a FROM t1 WHERE b='x63y';
323 --match 63
324--end
325--task 2
326 UPDATE t2 SET b=randomblob(20000);
327 --sleep 5
328 UPDATE t2 SET b='x'||a||'y';
329 SELECT a FROM t2 WHERE b='x63y';
330 --match 63
331--end
332--task 3
333 UPDATE t3 SET b=randomblob(20000);
334 --sleep 5
335 UPDATE t3 SET b='x'||a||'y';
336 SELECT a FROM t3 WHERE b='x63y';
337 --match 63
338--end
339--task 4
340 UPDATE t4 SET b=randomblob(20000);
341 --sleep 5
342 UPDATE t4 SET b='x'||a||'y';
343 SELECT a FROM t4 WHERE b='x63y';
344 --match 63
345--end
346--task 5
347 UPDATE t5 SET b=randomblob(20000);
348 --sleep 5
349 UPDATE t5 SET b='x'||a||'y';
350 SELECT a FROM t5 WHERE b='x63y';
351 --match 63
352--end
353--wait all
354
355--task 1
356 SELECT t1.a FROM t1, t2
357 WHERE t2.b GLOB 'x3?y' AND t1.b=('x'||(t2.a+3)||'y')
358 ORDER BY t1.a LIMIT 4
359 --match 33 34 35 36
360 SELECT t3.a FROM t3, t4
361 WHERE t4.b GLOB 'x4?y' AND t3.b=('x'||(t4.a+5)||'y')
362 ORDER BY t3.a LIMIT 7
363 --match 45 46 47 48 49 50 51
drhcc285c52015-03-11 14:34:38 +0000364 PRAGMA integrity_check;
365 --match ok
drh023dd902013-04-08 17:57:26 +0000366--end
367--task 5
368 SELECT t1.a FROM t1, t2
369 WHERE t2.b GLOB 'x3?y' AND t1.b=('x'||(t2.a+3)||'y')
370 ORDER BY t1.a LIMIT 4
371 --match 33 34 35 36
372 SELECT t3.a FROM t3, t4
373 WHERE t4.b GLOB 'x4?y' AND t3.b=('x'||(t4.a+5)||'y')
374 ORDER BY t3.a LIMIT 7
375 --match 45 46 47 48 49 50 51
drhcc285c52015-03-11 14:34:38 +0000376 PRAGMA integrity_check;
377 --match ok
drh023dd902013-04-08 17:57:26 +0000378--end
379--task 3
380 SELECT t1.a FROM t1, t2
381 WHERE t2.b GLOB 'x3?y' AND t1.b=('x'||(t2.a+3)||'y')
382 ORDER BY t1.a LIMIT 4
383 --match 33 34 35 36
384 SELECT t3.a FROM t3, t4
385 WHERE t4.b GLOB 'x4?y' AND t3.b=('x'||(t4.a+5)||'y')
386 ORDER BY t3.a LIMIT 7
387 --match 45 46 47 48 49 50 51
drhcc285c52015-03-11 14:34:38 +0000388 PRAGMA integrity_check;
389 --match ok
drh023dd902013-04-08 17:57:26 +0000390--end
391--task 2
392 SELECT t1.a FROM t1, t2
393 WHERE t2.b GLOB 'x3?y' AND t1.b=('x'||(t2.a+3)||'y')
394 ORDER BY t1.a LIMIT 4
395 --match 33 34 35 36
396 SELECT t3.a FROM t3, t4
397 WHERE t4.b GLOB 'x4?y' AND t3.b=('x'||(t4.a+5)||'y')
398 ORDER BY t3.a LIMIT 7
399 --match 45 46 47 48 49 50 51
drhcc285c52015-03-11 14:34:38 +0000400 PRAGMA integrity_check;
401 --match ok
drh023dd902013-04-08 17:57:26 +0000402--end
403--task 4
404 SELECT t1.a FROM t1, t2
405 WHERE t2.b GLOB 'x3?y' AND t1.b=('x'||(t2.a+3)||'y')
406 ORDER BY t1.a LIMIT 4
407 --match 33 34 35 36
408 SELECT t3.a FROM t3, t4
409 WHERE t4.b GLOB 'x4?y' AND t3.b=('x'||(t4.a+5)||'y')
410 ORDER BY t3.a LIMIT 7
411 --match 45 46 47 48 49 50 51
drhcc285c52015-03-11 14:34:38 +0000412 PRAGMA integrity_check;
413 --match ok
drh023dd902013-04-08 17:57:26 +0000414--end
drh6adab7a2013-04-08 18:58:00 +0000415--wait all