1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-29 08:01:23 +03:00

Fix some problems to do with temp-file databases and recovering from IO and SQLITE_FULL errors.

FossilOrigin-Name: 3d61da4a76af8c9c2a293df085f3ed5a7bb447df
This commit is contained in:
dan
2016-04-23 14:55:28 +00:00
parent 6bcfe8b61f
commit 6572c16ae1
4 changed files with 49 additions and 25 deletions

View File

@ -18,9 +18,9 @@ source $testdir/tester.tcl
source $testdir/malloc_common.tcl
set testprefix tempfault
sqlite3_memdebug_vfs_oom_test 0
# sqlite3_memdebug_vfs_oom_test 0
do_faultsim_test 1 -faults oom* -prep {
do_faultsim_test 1 -faults * -prep {
sqlite3 db ""
db eval {
PRAGMA page_size = 1024;
@ -42,14 +42,14 @@ do_faultsim_test 1 -faults oom* -prep {
faultsim_integrity_check
}
do_faultsim_test 2 -faults oom* -prep {
do_faultsim_test 2 -faults * -prep {
sqlite3 db ""
db eval {
PRAGMA page_size = 1024;
PRAGMA cache_size = 10;
CREATE TABLE t1(a, b);
CREATE INDEX i1 ON t1(b, a);
WITH x(i) AS (SELECT 1 UNION ALL SELECT i+1 FROM x WHERE i<50)
WITH x(i) AS (SELECT 1 UNION ALL SELECT i+1 FROM x WHERE i<100)
INSERT INTO t1 SELECT randomblob(100), randomblob(100) FROM x;
}
} -body {
@ -59,7 +59,27 @@ do_faultsim_test 2 -faults oom* -prep {
faultsim_integrity_check db
}
do_faultsim_test 3 -faults oom* -prep {
catch { db close }
do_faultsim_test 2.1 -faults * -prep {
if {[info commands db]==""} {
sqlite3 db ""
execsql {
PRAGMA page_size = 1024;
PRAGMA cache_size = 10;
CREATE TABLE t1(a, b);
CREATE INDEX i1 ON t1(b, a);
WITH x(i) AS (SELECT 1 UNION ALL SELECT i+1 FROM x WHERE i<100)
INSERT INTO t1 SELECT randomblob(100), randomblob(100) FROM x;
}
}
} -body {
execsql { UPDATE t1 SET a = randomblob(99) }
} -test {
faultsim_test_result {0 {}}
faultsim_integrity_check db
}
do_faultsim_test 3 -faults * -prep {
sqlite3 db ""
db eval {
PRAGMA page_size = 1024;