Consider using "=" and IS operators with even low-quality indexes in cases where...
[sqlite.git] / mptest / crash01.test
blobf1483dfa1d398c7fe8bb9d6a268110f0ec2ef4f3
1 /* 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';
23   SELECT sum(length(b)) FROM t1;
24   --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   DROP TABLE IF EXISTS t2;
36   CREATE TABLE t2(a INTEGER PRIMARY KEY, b);
37   INSERT INTO t2 SELECT a, b FROM t1;
38   UPDATE t1 SET b='x'||a||'y';
39   SELECT sum(length(b)) FROM t2;
40   --match 247
41   SELECT a FROM t2 WHERE b='x17y';
42   --match 17
43   CREATE INDEX t2b ON t2(b);
44   SELECT a FROM t2 WHERE b='x17y';
45   --match 17
46   SELECT a FROM t2 WHERE b GLOB 'x2?y' ORDER BY b DESC LIMIT 5;
47   --match 29 28 27 26 25
48 --end
49 --task 3
50   DROP TABLE IF EXISTS t3;
51   CREATE TABLE t3(a INTEGER PRIMARY KEY, b);
52   INSERT INTO t3 SELECT a, b FROM t1;
53   UPDATE t1 SET b='x'||a||'y';
54   SELECT sum(length(b)) FROM t3;
55   --match 247
56   SELECT a FROM t3 WHERE b='x17y';
57   --match 17
58   CREATE INDEX t3b ON t3(b);
59   SELECT a FROM t3 WHERE b='x17y';
60   --match 17
61   SELECT a FROM t3 WHERE b GLOB 'x2?y' ORDER BY b DESC LIMIT 5;
62   --match 29 28 27 26 25
63 --end
64 --task 4
65   DROP TABLE IF EXISTS t4;
66   CREATE TABLE t4(a INTEGER PRIMARY KEY, b);
67   INSERT INTO t4 SELECT a, b FROM t1;
68   UPDATE t1 SET b='x'||a||'y';
69   SELECT sum(length(b)) FROM t4;
70   --match 247
71   SELECT a FROM t4 WHERE b='x17y';
72   --match 17
73   CREATE INDEX t4b ON t4(b);
74   SELECT a FROM t4 WHERE b='x17y';
75   --match 17
76   SELECT a FROM t4 WHERE b GLOB 'x2?y' ORDER BY b DESC LIMIT 5;
77   --match 29 28 27 26 25
78 --end
79 --task 5
80   DROP TABLE IF EXISTS t5;
81   CREATE TABLE t5(a INTEGER PRIMARY KEY, b);
82   INSERT INTO t5 SELECT a, b FROM t1;
83   UPDATE t1 SET b='x'||a||'y';
84   SELECT sum(length(b)) FROM t5;
85   --match 247
86   SELECT a FROM t5 WHERE b='x17y';
87   --match 17
88   CREATE INDEX t5b ON t5(b);
89   SELECT a FROM t5 WHERE b='x17y';
90   --match 17
91   SELECT a FROM t5 WHERE b GLOB 'x2?y' ORDER BY b DESC LIMIT 5;
92   --match 29 28 27 26 25
93 --end
95 --wait all
96 /* After the database file has been set up, run the crash2 subscript
97 ** multiple times. */
98 --source crash02.subtest
99 --source crash02.subtest
100 --source crash02.subtest
101 --source crash02.subtest
102 --source crash02.subtest
103 --source crash02.subtest
104 --source crash02.subtest
105 --source crash02.subtest
106 --source crash02.subtest