Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix another assert() that is not true if the database schema is corrupt. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
bc97cec6338b16a4e9b1a9457d01bb7f |
User & Date: | drh 2015-04-19 21:59:19.589 |
Context
2015-04-19
| ||
22:31 | Silently ignore parser stack overflow when parsing a malformed schema in PRAGMA writable_schema mode. (check-in: 2cb37b959c user: drh tags: trunk) | |
21:59 | Fix another assert() that is not true if the database schema is corrupt. (check-in: bc97cec633 user: drh tags: trunk) | |
20:39 | Fix a faulty assert in the schema parsing logic. (check-in: b1ed949584 user: drh tags: trunk) | |
Changes
Changes to src/build.c.
︙ | ︙ | |||
1212 1213 1214 1215 1216 1217 1218 | void sqlite3AddColumnType(Parse *pParse, Token *pType){ Table *p; Column *pCol; p = pParse->pNewTable; if( p==0 || NEVER(p->nCol<1) ) return; pCol = &p->aCol[p->nCol-1]; | | > | 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 | void sqlite3AddColumnType(Parse *pParse, Token *pType){ Table *p; Column *pCol; p = pParse->pNewTable; if( p==0 || NEVER(p->nCol<1) ) return; pCol = &p->aCol[p->nCol-1]; assert( pCol->zType==0 || CORRUPT_DB ); sqlite3DbFree(pParse->db, pCol->zType); pCol->zType = sqlite3NameFromToken(pParse->db, pType); pCol->affinity = sqlite3AffinityType(pCol->zType, &pCol->szEst); } /* ** The expression is the default value for the most recently added column ** of the table currently under construction. |
︙ | ︙ |
Changes to test/misc1.test.
︙ | ︙ | |||
668 669 670 671 672 673 674 675 676 | PRAGMA writable_schema=ON; UPDATE sqlite_master SET sql='CREATE TABLE IF not EXISTS t(c)'; BEGIN; CREATE TABLE t2(x); ROLLBACK; DROP TABLE F; } {1 {no such table: F}} finish_test | > > > > > > > > > > > | 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 | PRAGMA writable_schema=ON; UPDATE sqlite_master SET sql='CREATE TABLE IF not EXISTS t(c)'; BEGIN; CREATE TABLE t2(x); ROLLBACK; DROP TABLE F; } {1 {no such table: F}} db close sqlite3 db :memory: do_catchsql_test misc1-23.3 { CREATE TABLE t1(x UNIQUE); PRAGMA writable_schema=ON; UPDATE sqlite_master SET sql='CREATE table y(a TEXT, a TEXT)'; BEGIN; CREATE TABLE t2(y); ROLLBACK; DROP TABLE IF EXISTS t; } {0 {}} finish_test |