| Index: third_party/sqlite/src/test/crash7.test
|
| diff --git a/third_party/sqlite/src/test/crash7.test b/third_party/sqlite/src/test/crash7.test
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..fc0596a8aa90c85425d9ca0c281dbc42db28752f
|
| --- /dev/null
|
| +++ b/third_party/sqlite/src/test/crash7.test
|
| @@ -0,0 +1,82 @@
|
| +# 2008 March 20
|
| +#
|
| +# The author disclaims copyright to this source code. In place of
|
| +# a legal notice, here is a blessing:
|
| +#
|
| +# May you do good and not evil.
|
| +# May you find forgiveness for yourself and forgive others.
|
| +# May you share freely, never taking more than you give.
|
| +#
|
| +#***********************************************************************
|
| +#
|
| +# $Id: crash7.test,v 1.1 2008/04/03 14:36:26 danielk1977 Exp $
|
| +
|
| +set testdir [file dirname $argv0]
|
| +source $testdir/tester.tcl
|
| +
|
| +ifcapable !crashtest {
|
| + finish_test
|
| + return
|
| +}
|
| +
|
| +proc signature {} {
|
| + return [db eval {SELECT count(*), md5sum(a), md5sum(b), md5sum(c) FROM abc}]
|
| +}
|
| +
|
| +foreach f [list test.db test.db-journal] {
|
| + for {set ii 1} {$ii < 64} {incr ii} {
|
| + db close
|
| + file delete test.db
|
| + sqlite3 db test.db
|
| +
|
| + set from_size [expr 1024 << ($ii&3)]
|
| + set to_size [expr 1024 << (($ii>>2)&3)]
|
| +
|
| + execsql "
|
| + PRAGMA page_size = $from_size;
|
| + BEGIN;
|
| + CREATE TABLE abc(a PRIMARY KEY, b, c);
|
| + INSERT INTO abc VALUES(randomblob(100), randomblob(200), randomblob(1000));
|
| + INSERT INTO abc
|
| + SELECT randomblob(1000), randomblob(200), randomblob(100)
|
| + FROM abc;
|
| + INSERT INTO abc
|
| + SELECT randomblob(100), randomblob(200), randomblob(1000)
|
| + FROM abc;
|
| + INSERT INTO abc
|
| + SELECT randomblob(100), randomblob(200), randomblob(1000)
|
| + FROM abc;
|
| + INSERT INTO abc
|
| + SELECT randomblob(100), randomblob(200), randomblob(1000)
|
| + FROM abc;
|
| + INSERT INTO abc
|
| + SELECT randomblob(100), randomblob(200), randomblob(1000)
|
| + FROM abc WHERE [expr $ii&16];
|
| + INSERT INTO abc
|
| + SELECT randomblob(25), randomblob(45), randomblob(9456)
|
| + FROM abc WHERE [expr $ii&32];
|
| + INSERT INTO abc
|
| + SELECT randomblob(100), randomblob(200), randomblob(1000)
|
| + FROM abc WHERE [expr $ii&8];
|
| + INSERT INTO abc
|
| + SELECT randomblob(25), randomblob(45), randomblob(9456)
|
| + FROM abc WHERE [expr $ii&4];
|
| + COMMIT;
|
| + "
|
| +
|
| + set sig [signature]
|
| + db close
|
| +
|
| + do_test crash7-1.$ii.crash {
|
| + crashsql -file $f "
|
| + PRAGMA page_size = $to_size;
|
| + VACUUM;
|
| + "
|
| + } {1 {child process exited abnormally}}
|
| +
|
| + sqlite3 db test.db
|
| + integrity_check crash7-1.$ii.integrity
|
| + }
|
| +}
|
| +
|
| +finish_test
|
|
|