Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Another test case to test a specific kind of database corruption. (CVS 5352) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
38e04d67635d49661f9b95338fc1cb81 |
User & Date: | danielk1977 2008-07-07 17:04:23.000 |
Context
2008-07-07
| ||
17:13 | Fix an error checked in as part of (5350). (CVS 5353) (check-in: acfb2b41ae user: danielk1977 tags: trunk) | |
17:04 | Another test case to test a specific kind of database corruption. (CVS 5352) (check-in: 38e04d6763 user: danielk1977 tags: trunk) | |
15:39 | Add a test case to test corruption discovered as part of the ptrmapPut() routine. (CVS 5351) (check-in: cbb9536fc4 user: danielk1977 tags: trunk) | |
Changes
Changes to test/corrupt2.test.
︙ | ︙ | |||
9 10 11 12 13 14 15 | # #*********************************************************************** # This file implements regression tests for SQLite library. # # This file implements tests to make sure SQLite does not crash or # segfault if it sees a corrupt database file. # | | | 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # #*********************************************************************** # This file implements regression tests for SQLite library. # # 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.7 2008/07/07 17:04:23 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl # The following tests - corrupt2-1.* - create some databases corrupted in # specific ways and ensure that SQLite detects them as corrupt. # |
︙ | ︙ | |||
165 166 167 168 169 170 171 | puts -nonewline $fd "\00\00\00\00" close $fd sqlite3 db2 corrupt.db catchsql { DROP TABLE t1; } db2 | > | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 | puts -nonewline $fd "\00\00\00\00" close $fd sqlite3 db2 corrupt.db catchsql { DROP TABLE t1; } db2 } {1 {database disk image is malformed}} do_test corrupt2-4.1 { file delete -force corrupt.db file delete -force corrupt.db-journal sqlite3 db2 corrupt.db execsql { PRAGMA page_size = 1024; CREATE TABLE t1(a, b, c); CREATE TABLE t2(a, b, c); INSERT INTO t2 VALUES(randomblob(100), randomblob(100), randomblob(100)); INSERT INTO t2 SELECT * FROM t2; INSERT INTO t2 SELECT * FROM t2; INSERT INTO t2 SELECT * FROM t2; INSERT INTO t2 SELECT * FROM t2; INSERT INTO t1 SELECT * FROM t2; } db2 db2 close # This block links a page from table t2 into the t1 table structure. # set fd [open corrupt.db r+] fconfigure $fd -encoding binary -translation binary seek $fd [expr 1024 + 12] set zCelloffset [read $fd 2] binary scan $zCelloffset S iCelloffset seek $fd [expr 1024 + $iCelloffset] set zChildPage [read $fd 4] seek $fd [expr 2*1024 + 12] set zCelloffset [read $fd 2] binary scan $zCelloffset S iCelloffset seek $fd [expr 2*1024 + $iCelloffset] puts -nonewline $fd $zChildPage close $fd sqlite3 db2 corrupt.db db2 eval {SELECT rowid FROM t1} { set result [db2 eval {pragma integrity_check}] break } set result } {{*** in database main *** Page 10: sqlite3BtreeInitPage() returns error code 11 On tree page 3 cell 1: Child page depth differs On tree page 2 cell 0: 2nd reference to page 10 On tree page 2 cell 1: Child page depth differs Page 4 is never used}} db2 close finish_test |