sqlite/test/dbpagefault.test
dan f56291ed02 Add test case for fuzzer case crash-18fe4e.
FossilOrigin-Name: 8372468bb5d8922cf20b8bbee34cfd6044ceb09c26a4efa79a5e6df2c7c4b730
2022-08-19 20:10:51 +00:00

74 lines
1.6 KiB
Plaintext

# 2022 July 06
#
# 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.
#
#***********************************************************************
#
set testdir [file dirname $argv0]
source $testdir/tester.tcl
source $testdir/lock_common.tcl
source $testdir/malloc_common.tcl
if {[permutation] == "inmemory_journal"} {
finish_test
return
}
set testprefix dbpagefault
faultsim_save_and_close
do_faultsim_test 1 -prep {
faultsim_restore_and_reopen
execsql { ATTACH 'test.db2' AS aux; }
} -body {
execsql {
CREATE VIRTUAL TABLE t1 USING sqlite_dbpage();
}
} -test {
execsql { PRAGMA journal_mode = off }
faultsim_test_result {0 {}}
}
do_faultsim_test 2 -prep {
sqlite3 db "xyz.db" -vfs memdb
execsql { ATTACH 'test.db2' AS aux; }
} -body {
execsql {
CREATE VIRTUAL TABLE t1 USING sqlite_dbpage();
INSERT INTO t1 DEFAULT VALUES;
}
} -test {
execsql { PRAGMA journal_mode = off }
faultsim_test_result {1 {no such schema}} {1 {SQL logic error}}
}
reset_db
do_execsql_test 3.0 {
CREATE TABLE x1(z, b);
CREATE TRIGGER BEFORE INSERT ON x1 BEGIN
DELETE FROM sqlite_dbpage WHERE pgno=100;
UPDATE sqlite_dbpage SET data=null WHERE pgno=100;
END;
}
do_faultsim_test 3 -prep {
catch { db close }
sqlite3 db test.db
execsql { PRAGMA trusted_schema = true }
} -body {
execsql { INSERT INTO x1 DEFAULT VALUES; }
} -test {
faultsim_test_result {0 {}}
}
finish_test