Fix another assert() that is not true if the database schema is corrupt.

FossilOrigin-Name: bc97cec6338b16a4e9b1a9457d01bb7fe462934d
This commit is contained in:
drh 2015-04-19 21:59:19 +00:00
parent 33c59ecafb
commit 5f1d2fa4d2
4 changed files with 21 additions and 9 deletions

View File

@ -1,5 +1,5 @@
C Fix\sa\sfaulty\sassert\sin\sthe\sschema\sparsing\slogic. C Fix\sanother\sassert()\sthat\sis\snot\strue\sif\sthe\sdatabase\sschema\sis\scorrupt.
D 2015-04-19T20:39:17.335 D 2015-04-19T21:59:19.589
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in faaf75b89840659d74501bea269c7e33414761c1 F Makefile.in faaf75b89840659d74501bea269c7e33414761c1
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@ -176,7 +176,7 @@ F src/btmutex.c 45a968cc85afed9b5e6cf55bf1f42f8d18107f79
F src/btree.c 127aceb71ba93f59bc9c6ba810e992a04299e98a F src/btree.c 127aceb71ba93f59bc9c6ba810e992a04299e98a
F src/btree.h 969adc948e89e449220ff0ff724c94bb2a52e9f1 F src/btree.h 969adc948e89e449220ff0ff724c94bb2a52e9f1
F src/btreeInt.h 973a22a6fd61350b454ad614832b1f0a5e25a1e4 F src/btreeInt.h 973a22a6fd61350b454ad614832b1f0a5e25a1e4
F src/build.c bc3a513a57b0962aa98b38ab9c850f3987457885 F src/build.c 2e46e275a9104bbebdaf04bccae3fe47c95d57b2
F src/callback.c 7b44ce59674338ad48b0e84e7b72f935ea4f68b0 F src/callback.c 7b44ce59674338ad48b0e84e7b72f935ea4f68b0
F src/complete.c a5cf5b4b56390cfb7b8636e8f7ddef90258dd575 F src/complete.c a5cf5b4b56390cfb7b8636e8f7ddef90258dd575
F src/ctime.c 98f89724adc891a1a4c655bee04e33e716e05887 F src/ctime.c 98f89724adc891a1a4c655bee04e33e716e05887
@ -743,7 +743,7 @@ F test/minmax.test 42fbad0e81afaa6e0de41c960329f2b2c3526efd
F test/minmax2.test b44bae787fc7b227597b01b0ca5575c7cb54d3bc F test/minmax2.test b44bae787fc7b227597b01b0ca5575c7cb54d3bc
F test/minmax3.test cc1e8b010136db0d01a6f2a29ba5a9f321034354 F test/minmax3.test cc1e8b010136db0d01a6f2a29ba5a9f321034354
F test/minmax4.test 936941484ebdceb8adec7c86b6cd9b6e5e897c1f F test/minmax4.test 936941484ebdceb8adec7c86b6cd9b6e5e897c1f
F test/misc1.test e908edf5c6e02dcc7453c1519e59625c67cc099e F test/misc1.test 783ba75743b2cf71e0f646bf540a6cef57264811
F test/misc2.test 00d7de54eda90e237fc9a38b9e5ccc769ebf6d4d F test/misc2.test 00d7de54eda90e237fc9a38b9e5ccc769ebf6d4d
F test/misc3.test cf3dda47d5dda3e53fc5804a100d3c82be736c9d F test/misc3.test cf3dda47d5dda3e53fc5804a100d3c82be736c9d
F test/misc4.test 9c078510fbfff05a9869a0b6d8b86a623ad2c4f6 F test/misc4.test 9c078510fbfff05a9869a0b6d8b86a623ad2c4f6
@ -1251,7 +1251,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
P dc61b292d8eaf422ca8a2b18f1caccef1a5389fd P b1ed949584a2526c04952b98c3aa283427f45e10
R cfb6006d4eb96e8b001f7f44f28a3f5a R 7eb252d844c06f104bb11959e0f1c997
U drh U drh
Z 30562fcecce8e59f5b0c8b52be03b8fe Z 149b8d57c1b56c76702cf167c619275e

View File

@ -1 +1 @@
b1ed949584a2526c04952b98c3aa283427f45e10 bc97cec6338b16a4e9b1a9457d01bb7fe462934d

View File

@ -1216,7 +1216,8 @@ void sqlite3AddColumnType(Parse *pParse, Token *pType){
p = pParse->pNewTable; p = pParse->pNewTable;
if( p==0 || NEVER(p->nCol<1) ) return; if( p==0 || NEVER(p->nCol<1) ) return;
pCol = &p->aCol[p->nCol-1]; pCol = &p->aCol[p->nCol-1];
assert( pCol->zType==0 ); assert( pCol->zType==0 || CORRUPT_DB );
sqlite3DbFree(pParse->db, pCol->zType);
pCol->zType = sqlite3NameFromToken(pParse->db, pType); pCol->zType = sqlite3NameFromToken(pParse->db, pType);
pCol->affinity = sqlite3AffinityType(pCol->zType, &pCol->szEst); pCol->affinity = sqlite3AffinityType(pCol->zType, &pCol->szEst);
} }

View File

@ -672,5 +672,16 @@ do_catchsql_test misc1-23.2 {
ROLLBACK; ROLLBACK;
DROP TABLE F; DROP TABLE F;
} {1 {no such 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 finish_test