OLD | NEW |
| (Empty) |
1 # 2011 January 28 | |
2 # | |
3 # The author disclaims copyright to this source code. In place of | |
4 # a legal notice, here is a blessing: | |
5 # | |
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. | |
9 # | |
10 #*********************************************************************** | |
11 # | |
12 | |
13 set testdir [file dirname $argv0] | |
14 source $testdir/tester.tcl | |
15 source $testdir/lock_common.tcl | |
16 source $testdir/malloc_common.tcl | |
17 | |
18 if {[permutation] == "inmemory_journal"} { | |
19 finish_test | |
20 return | |
21 } | |
22 | |
23 # Create a database with page-size 2048 bytes that uses 2 pages. Populate | |
24 # it so that if the page-size is changed to 1024 bytes and the db vacuumed, | |
25 # the new db size is 3 pages. | |
26 # | |
27 do_test pagerfault3-pre1 { | |
28 execsql { | |
29 PRAGMA auto_vacuum = 0; | |
30 PRAGMA page_size = 2048; | |
31 CREATE TABLE t1(x); | |
32 INSERT INTO t1 VALUES(randomblob(1200)); | |
33 PRAGMA page_count; | |
34 } | |
35 } {2} | |
36 do_test pagerfault3-pre2 { | |
37 faultsim_save_and_close | |
38 faultsim_restore_and_reopen | |
39 execsql { | |
40 PRAGMA page_size = 1024; | |
41 VACUUM; | |
42 PRAGMA page_count; | |
43 } | |
44 } {3} | |
45 | |
46 # Now do the page-size change and VACUUM with IO error injection. When | |
47 # an IO error is injected into the final xSync() of the commit, the pager | |
48 # will have to extend the db file from 3072 to 4096 byts when rolling | |
49 # back the hot-journal file. This is a special case in pager_truncate(). | |
50 # | |
51 do_faultsim_test pagerfault3-1 -faults ioerr-transient -prep { | |
52 faultsim_restore_and_reopen | |
53 } -body { | |
54 execsql { | |
55 PRAGMA page_size = 1024; | |
56 VACUUM; | |
57 } | |
58 } -test { | |
59 faultsim_test_result {0 {}} | |
60 faultsim_integrity_check | |
61 } | |
62 | |
63 finish_test | |
OLD | NEW |