Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Do not report the database corruption if the the db size header field is greater than the file size on disk unless the two change-counter header fields are identical. Fix for ticket [89b8c9ac54]. Backport by cherrypick of [00c4596f0b270]. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | branch-3.7.4 |
Files: | files | file ages | folders |
SHA1: |
e2616004dfaf61d776e448693971b647 |
User & Date: | drh 2011-02-20 03:40:59.226 |
Context
2011-02-20
| ||
21:03 | Pull in the fix to STAT2 processing from check-in [70a3d81742f]. (check-in: 692aafb17e user: drh tags: branch-3.7.4) | |
03:40 | Do not report the database corruption if the the db size header field is greater than the file size on disk unless the two change-counter header fields are identical. Fix for ticket [89b8c9ac54]. Backport by cherrypick of [00c4596f0b270]. (check-in: e2616004df user: drh tags: branch-3.7.4) | |
03:32 | Make sure the change-counter and SQLite-version fields of the header are set correctly even after vacuuming. This is a backport of changes [0be92a7576] and [04fa1e1690] to address ticket [5d863f876ee]. (check-in: 442be1358e user: drh tags: branch-3.7.4) | |
Changes
Changes to src/btree.c.
︙ | ︙ | |||
2382 2383 2384 2385 2386 2387 2388 | pBt->usableSize = usableSize; pBt->pageSize = pageSize; freeTempSpace(pBt); rc = sqlite3PagerSetPagesize(pBt->pPager, &pBt->pageSize, pageSize-usableSize); return rc; } | | | 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 | pBt->usableSize = usableSize; pBt->pageSize = pageSize; freeTempSpace(pBt); rc = sqlite3PagerSetPagesize(pBt->pPager, &pBt->pageSize, pageSize-usableSize); return rc; } if( (pBt->db->flags & SQLITE_RecoveryMode)==0 && nPage>nPageFile ){ rc = SQLITE_CORRUPT_BKPT; goto page1_init_failed; } if( usableSize<480 ){ goto page1_init_failed; } pBt->pageSize = pageSize; |
︙ | ︙ |
Changes to test/filefmt.test.
︙ | ︙ | |||
188 189 190 191 192 193 194 195 196 | } {ok} integrity_check filefmt-2.2.5 do_execsql_test filefmt-2.2.6 { COMMIT } {} db close sqlite3 db test.db integrity_check filefmt-2.2.7 finish_test | > > > > > > > > > > > > > > > > > > > > | 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 | } {ok} integrity_check filefmt-2.2.5 do_execsql_test filefmt-2.2.6 { COMMIT } {} db close sqlite3 db test.db integrity_check filefmt-2.2.7 #-------------------------------------------------------------------------- # Check that ticket 89b8c9ac54 is fixed. Before the fix, the SELECT # statement would return SQLITE_CORRUPT. The database file was not actually # corrupted, but SQLite was reporting that it was. # db close forcedelete test.db sqlite3 db test.db do_execsql_test filefmt-3.1 { PRAGMA auto_vacuum = 1; CREATE TABLE t1(a, b); } {} do_test filefmt-3.2 { sql36231 { DROP TABLE t1 } } {} do_execsql_test filefmt-3.3 { SELECT * FROM sqlite_master; PRAGMA integrity_check; } {ok} finish_test |