diff options
author | danielk1977 <danielk1977@noemail.net> | 2009-02-19 14:39:25 +0000 |
---|---|---|
committer | danielk1977 <danielk1977@noemail.net> | 2009-02-19 14:39:25 +0000 |
commit | 6ab3a2ec8a7a21f8eb607679875e3193e6d16f4c (patch) | |
tree | 58e9ac88aa2cd60f02228baeda46b9c16eb6d5a9 /src/walker.c | |
parent | 076d4661a68f67dbabc421eab124fe5908ebbeee (diff) | |
download | sqlite-6ab3a2ec8a7a21f8eb607679875e3193e6d16f4c.tar.gz sqlite-6ab3a2ec8a7a21f8eb607679875e3193e6d16f4c.zip |
Changes to reduce the heap space consumed by triggers, views and tables in the in-memory representation of the schema. Also to reduce the space used by prepared statements slightly. (CVS 6305)
FossilOrigin-Name: d9f6ffbc5ea090ba0daac571fc9a6c68b9c864e4
Diffstat (limited to 'src/walker.c')
-rw-r--r-- | src/walker.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/walker.c b/src/walker.c index 9a3a9c27b..4ed4cd95d 100644 --- a/src/walker.c +++ b/src/walker.c @@ -12,7 +12,7 @@ ** This file contains routines used for walking the parser tree for ** an SQL statement. ** -** $Id: walker.c,v 1.1 2008/08/20 16:35:10 drh Exp $ +** $Id: walker.c,v 1.2 2009/02/19 14:39:25 danielk1977 Exp $ */ #include "sqliteInt.h" #include <stdlib.h> @@ -45,9 +45,10 @@ int sqlite3WalkExpr(Walker *pWalker, Expr *pExpr){ if( rc==WRC_Continue ){ if( sqlite3WalkExpr(pWalker, pExpr->pLeft) ) return WRC_Abort; if( sqlite3WalkExpr(pWalker, pExpr->pRight) ) return WRC_Abort; - if( sqlite3WalkExprList(pWalker, pExpr->pList) ) return WRC_Abort; - if( sqlite3WalkSelect(pWalker, pExpr->pSelect) ){ - return WRC_Abort; + if( ExprHasProperty(pExpr, EP_xIsSelect) ){ + if( sqlite3WalkSelect(pWalker, pExpr->x.pSelect) ) return WRC_Abort; + }else{ + if( sqlite3WalkExprList(pWalker, pExpr->x.pList) ) return WRC_Abort; } } return rc & WRC_Abort; |