mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Fix a problem causing the BtShared.isPending flag to be cleared to early. Also coverage improvements for btree.c. (CVS 6440)
FossilOrigin-Name: 8f1423445b29a5f52ed907de6db82128a96ebfe2
This commit is contained in:
@ -13,7 +13,7 @@
|
||||
# This file implements tests to make sure SQLite does not crash or
|
||||
# segfault if it sees a corrupt database file.
|
||||
#
|
||||
# $Id: corrupt2.test,v 1.18 2008/09/29 11:49:48 danielk1977 Exp $
|
||||
# $Id: corrupt2.test,v 1.19 2009/04/02 18:28:08 danielk1977 Exp $
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
@ -455,4 +455,48 @@ corruption_test -sqlprep {
|
||||
} {SQLITE_CORRUPT}
|
||||
}
|
||||
|
||||
corruption_test -sqlprep {
|
||||
PRAGMA auto_vacuum = incremental;
|
||||
CREATE TABLE t1(a INTEGER PRIMARY KEY, b);
|
||||
CREATE TABLE t2(a INTEGER PRIMARY KEY, b);
|
||||
INSERT INTO t1 VALUES(1, randstr(100,100));
|
||||
INSERT INTO t1 SELECT NULL, randstr(100,100) FROM t1;
|
||||
INSERT INTO t1 SELECT NULL, randstr(100,100) FROM t1;
|
||||
INSERT INTO t1 SELECT NULL, randstr(100,100) FROM t1;
|
||||
INSERT INTO t1 SELECT NULL, randstr(100,100) FROM t1;
|
||||
INSERT INTO t1 SELECT NULL, randstr(100,100) FROM t1;
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
DELETE FROM t1;
|
||||
} -corrupt {
|
||||
set offset [expr [file size corrupt.db] - 1024]
|
||||
hexio_write corrupt.db $offset FF
|
||||
hexio_write corrupt.db 24 12345678
|
||||
} -test {
|
||||
do_test corrupt2-11.1 {
|
||||
catchsql { PRAGMA incremental_vacuum }
|
||||
} {1 {database disk image is malformed}}
|
||||
}
|
||||
|
||||
corruption_test -sqlprep {
|
||||
PRAGMA auto_vacuum = incremental;
|
||||
CREATE TABLE t1(a INTEGER PRIMARY KEY, b);
|
||||
CREATE TABLE t2(a INTEGER PRIMARY KEY, b);
|
||||
INSERT INTO t1 VALUES(1, randstr(100,100));
|
||||
INSERT INTO t1 SELECT NULL, randstr(100,100) FROM t1;
|
||||
INSERT INTO t1 SELECT NULL, randstr(100,100) FROM t1;
|
||||
INSERT INTO t1 SELECT NULL, randstr(100,100) FROM t1;
|
||||
INSERT INTO t1 SELECT NULL, randstr(100,100) FROM t1;
|
||||
INSERT INTO t1 SELECT NULL, randstr(100,100) FROM t1;
|
||||
INSERT INTO t2 SELECT * FROM t1;
|
||||
DELETE FROM t1;
|
||||
} -corrupt {
|
||||
set pgno [expr [file size corrupt.db] / 1024]
|
||||
hexio_write corrupt.db [expr 1024+5*($pgno-3)] 03
|
||||
hexio_write corrupt.db 24 12345678
|
||||
} -test {
|
||||
do_test corrupt2-12.1 {
|
||||
catchsql { PRAGMA incremental_vacuum }
|
||||
} {1 {database disk image is malformed}}
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
Reference in New Issue
Block a user