aboutsummaryrefslogtreecommitdiff
path: root/src/expr.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2018-12-06 22:12:18 +0000
committerdrh <drh@noemail.net>2018-12-06 22:12:18 +0000
commita37b6a5e31f341412dc0c454569fea5cd0f88cef (patch)
tree4cbf05ac30901ed11f50ff9fa4fd228da366daf7 /src/expr.c
parenta83899754423bea16d4efeb4f39482b57d79c083 (diff)
downloadsqlite-a37b6a5e31f341412dc0c454569fea5cd0f88cef.tar.gz
sqlite-a37b6a5e31f341412dc0c454569fea5cd0f88cef.zip
Performance improvement: Avoid using sqlite3WalkerSelectExpr()
and sqlite3WalkerSelectFrom() twice, so that the compiler will in-line their implementation. FossilOrigin-Name: 2b9258b8b0342330ebe8c22b59ec276fd042a05547d15b24fdf29e16280868de
Diffstat (limited to 'src/expr.c')
-rw-r--r--src/expr.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/expr.c b/src/expr.c
index a6bb441d5..6886d30b2 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -1345,13 +1345,16 @@ static int gatherSelectWindowsCallback(Walker *pWalker, Expr *pExpr){
}
return WRC_Continue;
}
+static int gatherSelectWindowsSelectCallback(Walker *pWalker, Select *p){
+ return p==pWalker->u.pSelect ? WRC_Continue : WRC_Prune;
+}
static void gatherSelectWindows(Select *p){
Walker w;
w.xExprCallback = gatherSelectWindowsCallback;
- w.xSelectCallback = 0;
+ w.xSelectCallback = gatherSelectWindowsSelectCallback;
+ w.xSelectCallback2 = 0;
w.u.pSelect = p;
- sqlite3WalkSelectExpr(&w, p);
- sqlite3WalkSelectFrom(&w, p);
+ sqlite3WalkSelect(&w, p);
}
#endif