aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/attach.c3
-rw-r--r--src/sqliteInt.h2
-rw-r--r--src/walker.c14
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.