diff options
author | drh <drh@noemail.net> | 2008-09-01 15:52:10 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2008-09-01 15:52:10 +0000 |
commit | 588a9a1a1cf1b4f577b30af675b1c1cc956fc24e (patch) | |
tree | f8b42bd3efde895fc376523197e31ccb60afd124 /src/tokenize.c | |
parent | 865d4d429086a3dc541d5daead1186a7be93807e (diff) | |
download | sqlite-588a9a1a1cf1b4f577b30af675b1c1cc956fc24e.tar.gz sqlite-588a9a1a1cf1b4f577b30af675b1c1cc956fc24e.zip |
Defer deleting Table objects associated with flattened subqueries until
all code has been generated, in case some expression node still references
the Table object. Ticket #3346. (CVS 5650)
FossilOrigin-Name: d04d70336727a0db959c672e6c22cdaa0505dce5
Diffstat (limited to 'src/tokenize.c')
-rw-r--r-- | src/tokenize.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/tokenize.c b/src/tokenize.c index 802c16397..9682cc206 100644 --- a/src/tokenize.c +++ b/src/tokenize.c @@ -15,7 +15,7 @@ ** individual tokens and sends those tokens one-by-one over to the ** parser for analysis. ** -** $Id: tokenize.c,v 1.151 2008/08/29 02:14:03 drh Exp $ +** $Id: tokenize.c,v 1.152 2008/09/01 15:52:11 drh Exp $ */ #include "sqliteInt.h" #include <ctype.h> @@ -504,6 +504,11 @@ abort_parse: sqlite3DeleteTrigger(db, pParse->pNewTrigger); sqlite3DbFree(db, pParse->apVarExpr); sqlite3DbFree(db, pParse->aAlias); + while( pParse->pZombieTab ){ + Table *p = pParse->pZombieTab; + pParse->pZombieTab = p->pNextZombie; + sqlite3DeleteTable(p); + } if( nErr>0 && (pParse->rc==SQLITE_OK || pParse->rc==SQLITE_DONE) ){ pParse->rc = SQLITE_ERROR; } |