crash01.test 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  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. 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';
  38. SELECT sum(length(b)) FROM t2;
  39. --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';
  52. SELECT sum(length(b)) FROM t3;
  53. --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';
  66. SELECT sum(length(b)) FROM t4;
  67. --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';
  80. SELECT sum(length(b)) FROM t5;
  81. --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. --wait all
  91. /* After the database file has been set up, run the crash2 subscript
  92. ** multiple times. */
  93. --source crash02.subtest
  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