Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix an assert() that may be false for corrupt databases. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
b2ce5ed175cb5029ac07392ae371c86e |
User & Date: | dan 2019-04-22 11:47:40 |
Context
2019-04-22
| ||
20:05 | Early detection of SQLITE_TOOBIG when processing nested queries. (check-in: 5d85d80e user: drh tags: trunk) | |
11:47 | Fix an assert() that may be false for corrupt databases. (check-in: b2ce5ed1 user: dan tags: trunk) | |
2019-04-19
| ||
23:05 | Mark a single branch as no longer reachable. (check-in: 4f35b3b7 user: drh tags: trunk) | |
Changes
Changes to src/btree.c.
︙ | ︙ | |||
4280 4281 4282 4283 4284 4285 4286 | if( rc==SQLITE_OK ){ if( iSavepoint<0 && (pBt->btsFlags & BTS_INITIALLY_EMPTY)!=0 ){ pBt->nPage = 0; } rc = newDatabase(pBt); pBt->nPage = get4byte(28 + pBt->pPage1->aData); | | | < | | 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 | if( rc==SQLITE_OK ){ if( iSavepoint<0 && (pBt->btsFlags & BTS_INITIALLY_EMPTY)!=0 ){ pBt->nPage = 0; } rc = newDatabase(pBt); pBt->nPage = get4byte(28 + pBt->pPage1->aData); /* pBt->nPage might be zero if the database was corrupt when ** the transaction was started. Otherwise, it must be at least 1. */ assert( CORRUPT_DB || pBt->nPage>0 ); } sqlite3BtreeLeave(p); } return rc; } /* |
︙ | ︙ |
Changes to test/corruptL.test.
︙ | ︙ | |||
833 834 835 836 837 838 839 840 841 | | end a.db }]} {} do_catchsql_test 8.1 { INSERT INTO t3 SELECT * FROM t2; } {1 {database disk image is malformed}} finish_test | > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 | | end a.db }]} {} do_catchsql_test 8.1 { INSERT INTO t3 SELECT * FROM t2; } {1 {database disk image is malformed}} #------------------------------------------------------------------------- reset_db do_test 9.0 { sqlite3 db {} db deserialize [decode_hexdb { | size 8192 pagesize 4096 filename crash-ab10597e4e1c32.db | page 1 offset 0 | 0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 SQLite format 3. | 16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 00 .....@ ........ | 96: 00 00 00 00 0d 00 00 00 01 0f d6 00 0f d6 00 00 ................ | 4048: 00 00 00 00 00 00 28 01 06 17 11 11 01 3d 74 61 ......(......=ta | 4064: 62 6c 65 74 31 74 31 02 43 52 45 41 54 45 20 54 blet1t1.CREATE T | 4080: 41 42 4c 45 20 74 31 28 61 2c 62 2c 63 2c 64 29 ABLE t1(a,b,c,d) | page 2 offset 4096 | 0: 0d 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ | end crash-ab10597e4e1c32.db }]} {} do_execsql_test 9.1 { SAVEPOINT one; } do_catchsql_test 9.3 { INSERT INTO t1(b,c) VALUES(5,6); } {1 {database disk image is malformed}} do_execsql_test 9.3 { ROLLBACK TO one; } finish_test |