diff options
author | drh <drh@noemail.net> | 2018-12-06 22:12:18 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2018-12-06 22:12:18 +0000 |
commit | a37b6a5e31f341412dc0c454569fea5cd0f88cef (patch) | |
tree | 4cbf05ac30901ed11f50ff9fa4fd228da366daf7 /src/expr.c | |
parent | a83899754423bea16d4efeb4f39482b57d79c083 (diff) | |
download | sqlite-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.c | 9 |
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 |