aboutsummaryrefslogtreecommitdiff
path: root/src/tokenize.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2008-09-01 15:52:10 +0000
committerdrh <drh@noemail.net>2008-09-01 15:52:10 +0000
commit588a9a1a1cf1b4f577b30af675b1c1cc956fc24e (patch)
treef8b42bd3efde895fc376523197e31ccb60afd124 /src/tokenize.c
parent865d4d429086a3dc541d5daead1186a7be93807e (diff)
downloadsqlite-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.c7
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;
}