3 # The author disclaims copyright to this source code. In place of
4 # a legal notice, here is a blessing:
6 # May you do good and not evil.
7 # May you find forgiveness for yourself and forgive others.
8 # May you share freely, never taking more than you give.
10 #***********************************************************************
13 set testdir [file dirname $argv0]
14 source $testdir/tester.tcl
15 source $testdir/lock_common.tcl
16 source $testdir/malloc_common.tcl
18 if {[permutation] == "inmemory_journal"} {
28 set testprefix dbpagefault
30 faultsim_save_and_close
31 do_faultsim_test 1 -prep {
32 faultsim_restore_and_reopen
33 execsql { ATTACH 'test.db2' AS aux; }
36 CREATE VIRTUAL TABLE t1 USING sqlite_dbpage();
39 execsql { PRAGMA journal_mode = off }
40 faultsim_test_result {0 {}}
43 do_faultsim_test 2 -prep {
44 sqlite3 db "xyz.db" -vfs memdb
45 execsql { ATTACH 'test.db2' AS aux; }
48 CREATE VIRTUAL TABLE t1 USING sqlite_dbpage();
49 UPDATE t1 SET data=zeroblob(1024) WHERE pgno=1 AND schema='aux';
52 execsql { PRAGMA journal_mode = off }
53 faultsim_test_result {0 {}} {1 {no such schema}} {1 {SQL logic error}} {1 {unable to open a temporary database file for storing temporary tables}}
58 CREATE TABLE x1(z, b);
59 CREATE TRIGGER BEFORE INSERT ON x1 BEGIN
60 DELETE FROM sqlite_dbpage WHERE pgno=100;
61 UPDATE sqlite_dbpage SET data=null WHERE pgno=100;
65 # This test case no longer works, as it is no longer possible to use
66 # virtual table sqlite_dbpage from within a trigger.
69 PRAGMA trusted_schema = 1;
71 do_catchsql_test 3.2 {
72 PRAGMA trusted_schema = 1;
73 INSERT INTO x1 DEFAULT VALUES;
74 } {1 {unsafe use of virtual table "sqlite_dbpage"}}
75 #do_faultsim_test 3 -prep {
78 # execsql { PRAGMA trusted_schema = 1 }
80 # execsql { INSERT INTO x1 DEFAULT VALUES; }
82 # faultsim_test_result {0 {}}