Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Change the error message slightly for when two or more indexes have the same rootpage. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
916c52dad414b224695d455a42af36f8 |
User & Date: | drh 2019-01-30 19:50:07.547 |
Context
2019-01-31
| ||
01:39 | Improvements to "PRAGMA parser_trace=ON": Make it a flag pragma, and then use the flag to show the complete SQL text at the beginning of the parse. (check-in: 507c43537f user: drh tags: trunk) | |
2019-01-30
| ||
19:50 | Change the error message slightly for when two or more indexes have the same rootpage. (check-in: 916c52dad4 user: drh tags: trunk) | |
19:12 | When parsing the schema, check for duplicate index root page numbers before adding the index to the schema hash table. (check-in: 6b360bc0b9 user: dan tags: trunk) | |
Changes
Changes to src/build.c.
︙ | ︙ | |||
3486 3487 3488 3489 3490 3491 3492 | if( db->init.busy ){ Index *p; assert( !IN_SPECIAL_PARSE ); assert( sqlite3SchemaMutexHeld(db, 0, pIndex->pSchema) ); if( pTblName!=0 ){ pIndex->tnum = db->init.newTnum; if( sqlite3IndexHasDuplicateRootPage(pIndex) ){ | | | 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 | if( db->init.busy ){ Index *p; assert( !IN_SPECIAL_PARSE ); assert( sqlite3SchemaMutexHeld(db, 0, pIndex->pSchema) ); if( pTblName!=0 ){ pIndex->tnum = db->init.newTnum; if( sqlite3IndexHasDuplicateRootPage(pIndex) ){ sqlite3ErrorMsg(pParse, "invalid rootpage"); pParse->rc = SQLITE_CORRUPT_BKPT; goto exit_create_index; } } p = sqlite3HashInsert(&pIndex->pSchema->idxHash, pIndex->zName, pIndex); if( p ){ |
︙ | ︙ |
Changes to test/corruptL.test.
︙ | ︙ | |||
623 624 625 626 627 628 629 | }]} {} do_catchsql_test 6.1 { BEGIN; INSERT INTO t1(b) VALUES(1); INSERT INTO t1(b) VALUES(2); COMMIT; | | | 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 | }]} {} do_catchsql_test 6.1 { BEGIN; INSERT INTO t1(b) VALUES(1); INSERT INTO t1(b) VALUES(2); COMMIT; } {1 {malformed database schema (t1b) - invalid rootpage}} #------------------------------------------------------------------------- reset_db do_test 7.0 { sqlite3 db {} db deserialize [decode_hexdb { | size 20480 pagesize 4096 filename crash-8391315d75edff.db |
︙ | ︙ | |||
716 717 718 719 720 721 722 | | page 5 offset 16384 | 0: 0d 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 ................ | end crash-8391315d75edff.db }]} {} do_catchsql_test 7.1 { SELECT * FROM sqlite_master; | | | 716 717 718 719 720 721 722 723 724 725 | | page 5 offset 16384 | 0: 0d 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00 ................ | end crash-8391315d75edff.db }]} {} do_catchsql_test 7.1 { SELECT * FROM sqlite_master; } {1 {malformed database schema (t1x1) - invalid rootpage}} finish_test |
Changes to test/fuzzdata8.db.
cannot compute difference between binary files