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