blob: 46f170cecc2c2f2a28fa94c123d565592a3e49c7 [file] [log] [blame]
drh6adab7a2013-04-08 18:58:00 +00001/* Test cases involving incomplete transactions that must be rolled back.
2*/
3--task 1
4 DROP TABLE IF EXISTS t1;
5 CREATE TABLE t1(a INTEGER PRIMARY KEY, b);
6 --sleep 1
7 INSERT INTO t1 VALUES(1, randomblob(2000));
8 INSERT INTO t1 VALUES(2, randomblob(1000));
9 --sleep 1
10 INSERT INTO t1 SELECT a+2, randomblob(1500) FROM t1;
11 INSERT INTO t1 SELECT a+4, randomblob(1500) FROM t1;
12 INSERT INTO t1 SELECT a+8, randomblob(1500) FROM t1;
13 --sleep 1
14 INSERT INTO t1 SELECT a+16, randomblob(1500) FROM t1;
15 --sleep 1
16 INSERT INTO t1 SELECT a+32, randomblob(1500) FROM t1;
17 SELECT count(*) FROM t1;
18 --match 64
19 SELECT avg(length(b)) FROM t1;
20 --match 1500.0
21 --sleep 2
22 UPDATE t1 SET b='x'||a||'y';
drhe3147332013-05-17 12:51:49 +000023 SELECT sum(length(b)) FROM t1;
drh6adab7a2013-04-08 18:58:00 +000024 --match 247
25 SELECT a FROM t1 WHERE b='x17y';
26 --match 17
27 CREATE INDEX t1b ON t1(b);
28 SELECT a FROM t1 WHERE b='x17y';
29 --match 17
30 SELECT a FROM t1 WHERE b GLOB 'x2?y' ORDER BY b DESC LIMIT 5;
31 --match 29 28 27 26 25
32--end
33--wait 1
34--task 2
35 CREATE TABLE t2(a INTEGER PRIMARY KEY, b);
36 INSERT INTO t2 SELECT a, b FROM t1;
37 UPDATE t1 SET b='x'||a||'y';
drhe3147332013-05-17 12:51:49 +000038 SELECT sum(length(b)) FROM t2;
drh6adab7a2013-04-08 18:58:00 +000039 --match 247
40 SELECT a FROM t2 WHERE b='x17y';
41 --match 17
42 CREATE INDEX t2b ON t2(b);
43 SELECT a FROM t2 WHERE b='x17y';
44 --match 17
45 SELECT a FROM t2 WHERE b GLOB 'x2?y' ORDER BY b DESC LIMIT 5;
46 --match 29 28 27 26 25
47--end
48--task 3
49 CREATE TABLE t3(a INTEGER PRIMARY KEY, b);
50 INSERT INTO t3 SELECT a, b FROM t1;
51 UPDATE t1 SET b='x'||a||'y';
drhe3147332013-05-17 12:51:49 +000052 SELECT sum(length(b)) FROM t3;
drh6adab7a2013-04-08 18:58:00 +000053 --match 247
54 SELECT a FROM t3 WHERE b='x17y';
55 --match 17
56 CREATE INDEX t3b ON t3(b);
57 SELECT a FROM t3 WHERE b='x17y';
58 --match 17
59 SELECT a FROM t3 WHERE b GLOB 'x2?y' ORDER BY b DESC LIMIT 5;
60 --match 29 28 27 26 25
61--end
62--task 4
63 CREATE TABLE t4(a INTEGER PRIMARY KEY, b);
64 INSERT INTO t4 SELECT a, b FROM t1;
65 UPDATE t1 SET b='x'||a||'y';
drhe3147332013-05-17 12:51:49 +000066 SELECT sum(length(b)) FROM t4;
drh6adab7a2013-04-08 18:58:00 +000067 --match 247
68 SELECT a FROM t4 WHERE b='x17y';
69 --match 17
70 CREATE INDEX t4b ON t4(b);
71 SELECT a FROM t4 WHERE b='x17y';
72 --match 17
73 SELECT a FROM t4 WHERE b GLOB 'x2?y' ORDER BY b DESC LIMIT 5;
74 --match 29 28 27 26 25
75--end
76--task 5
77 CREATE TABLE t5(a INTEGER PRIMARY KEY, b);
78 INSERT INTO t5 SELECT a, b FROM t1;
79 UPDATE t1 SET b='x'||a||'y';
drhe3147332013-05-17 12:51:49 +000080 SELECT sum(length(b)) FROM t5;
drh6adab7a2013-04-08 18:58:00 +000081 --match 247
82 SELECT a FROM t5 WHERE b='x17y';
83 --match 17
84 CREATE INDEX t5b ON t5(b);
85 SELECT a FROM t5 WHERE b='x17y';
86 --match 17
87 SELECT a FROM t5 WHERE b GLOB 'x2?y' ORDER BY b DESC LIMIT 5;
88 --match 29 28 27 26 25
89--end
90
91--wait all
92/* After the database file has been set up, run the crash2 subscript
93** multiple times. */
94--source crash02.subtest
95--source crash02.subtest
96--source crash02.subtest
97--source crash02.subtest
98--source crash02.subtest
99--source crash02.subtest
100--source crash02.subtest
101--source crash02.subtest
102--source crash02.subtest