xref: /sqlite-3.40.0/test/tkt-6bfb98dfc0.test (revision 138eeeb1)
1# 2013 March 27
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. Specifically,
12# it tests that ticket [6bfb98dfc0]
13#
14# The final INSERT in the script below reports that the database is
15# corrupt (SQLITE_CORRUPT) and aborts even though the database is not
16# corrupt.
17#
18#    PRAGMA page_size=512;
19#    CREATE TABLE t1(x INTEGER PRIMARY KEY, y);
20#    INSERT INTO t1 VALUES(1,randomblob(400));
21#    INSERT INTO t1 VALUES(2,randomblob(400));
22#    INSERT INTO t1 SELECT x+2, randomblob(400) FROM t1;
23#    INSERT INTO t1 SELECT x+4, randomblob(400) FROM t1;
24#    INSERT INTO t1 SELECT x+8, randomblob(400) FROM t1;
25#    INSERT INTO t1 SELECT x+16, randomblob(400) FROM t1;
26#    INSERT INTO t1 SELECT x+32, randomblob(400) FROM t1;
27#    INSERT INTO t1 SELECT x+64, randomblob(400) FROM t1 WHERE x<10;
28#    CREATE TRIGGER r1 AFTER INSERT ON t1 WHEN new.x=74 BEGIN
29#      DELETE FROM t1;
30#      INSERT INTO t1 VALUES(75, randomblob(400));
31#      INSERT INTO t1 VALUES(76, randomblob(400));
32#    END;
33#    INSERT INTO t1 VALUES(74, randomblob(400));
34#
35
36set testdir [file dirname $argv0]
37source $testdir/tester.tcl
38
39do_test tkt-6bfb98dfc0.100 {
40  db eval {
41    PRAGMA page_size=512;
42    CREATE TABLE t1(x INTEGER PRIMARY KEY, y);
43    INSERT INTO t1 VALUES(1,randomblob(400));
44    INSERT INTO t1 VALUES(2,randomblob(400));
45    INSERT INTO t1 SELECT x+2, randomblob(400) FROM t1;
46    INSERT INTO t1 SELECT x+4, randomblob(400) FROM t1;
47    INSERT INTO t1 SELECT x+8, randomblob(400) FROM t1;
48    INSERT INTO t1 SELECT x+16, randomblob(400) FROM t1;
49    INSERT INTO t1 SELECT x+32, randomblob(400) FROM t1;
50    INSERT INTO t1 SELECT x+64, randomblob(400) FROM t1 WHERE x<10;
51    CREATE TRIGGER r1 AFTER INSERT ON t1 WHEN new.x=74 BEGIN
52      DELETE FROM t1;
53      INSERT INTO t1 VALUES(75, randomblob(400));
54      INSERT INTO t1 VALUES(76, randomblob(400));
55    END;
56    INSERT INTO t1 VALUES(74, randomblob(400));
57    SELECT x, length(y) FROM t1 ORDER BY x;
58  }
59} {75 400 76 400}
60
61finish_test
62