diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/attach.c | 3 | ||||
-rw-r--r-- | src/sqliteInt.h | 2 | ||||
-rw-r--r-- | src/walker.c | 14 |
3 files changed, 14 insertions, 5 deletions
diff --git a/src/attach.c b/src/attach.c index 8fcfb0438..9bd57f286 100644 --- a/src/attach.c +++ b/src/attach.c @@ -511,10 +511,9 @@ void sqlite3FixInit( pFix->w.pParse = pParse; pFix->w.xExprCallback = fixExprCb; pFix->w.xSelectCallback = fixSelectCb; - pFix->w.xSelectCallback2 = 0; + pFix->w.xSelectCallback2 = sqlite3WalkWinDefnDummyCallback; pFix->w.walkerDepth = 0; pFix->w.eCode = 0; - pFix->w.bWalkWinDefn = 1; pFix->w.u.pFix = pFix; } diff --git a/src/sqliteInt.h b/src/sqliteInt.h index 69d9b4912..21c6f6f30 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -3833,7 +3833,6 @@ struct Walker { void (*xSelectCallback2)(Walker*,Select*);/* Second callback for SELECTs */ int walkerDepth; /* Number of subqueries */ u16 eCode; /* A small processing code */ - unsigned bWalkWinDefn : 1; /* True to walk pWinDefn */ union { /* Extra data for callback */ NameContext *pNC; /* Naming context */ int n; /* A counter */ @@ -3881,6 +3880,7 @@ int sqlite3SelectWalkNoop(Walker*, Select*); int sqlite3SelectWalkFail(Walker*, Select*); int sqlite3WalkerDepthIncrease(Walker*,Select*); void sqlite3WalkerDepthDecrease(Walker*,Select*); +void sqlite3WalkWinDefnDummyCallback(Walker*,Select*); #ifdef SQLITE_DEBUG void sqlite3SelectWalkAssert2(Walker*, Select*); diff --git a/src/walker.c b/src/walker.c index 84fb71790..28c80fa79 100644 --- a/src/walker.c +++ b/src/walker.c @@ -113,6 +113,16 @@ int sqlite3WalkExprList(Walker *pWalker, ExprList *p){ } /* +** This is a no-op callback for Walker->xSelectCallback2. If this +** callback is set, then the Select->pWinDefn list is traversed. +*/ +void sqlite3WalkWinDefnDummyCallback(Walker *pWalker, Select *p){ + UNUSED_PARAMETER(pWalker); + UNUSED_PARAMETER(p); + /* No-op */ +} + +/* ** Walk all expressions associated with SELECT statement p. Do ** not invoke the SELECT callback on p, but do (of course) invoke ** any expr callbacks and SELECT callbacks that come from subqueries. @@ -128,7 +138,7 @@ int sqlite3WalkSelectExpr(Walker *pWalker, Select *p){ #if !defined(SQLITE_OMIT_WINDOWFUNC) if( p->pWinDefn ){ Parse *pParse; - if( pWalker->bWalkWinDefn + if( pWalker->xSelectCallback2==sqlite3WalkWinDefnDummyCallback || ((pParse = pWalker->pParse)!=0 && IN_RENAME_OBJECT) ){ /* The following may return WRC_Abort if there are unresolvable @@ -167,7 +177,7 @@ int sqlite3WalkSelectFrom(Walker *pWalker, Select *p){ } } return WRC_Continue; -} +} /* ** Call sqlite3WalkExpr() for every expression in Select statement p. |