From 93ca3933d17bca3cd5dbad1731d722c6d0108bf0 Mon Sep 17 00:00:00 2001 From: drh Date: Wed, 10 Aug 2016 20:02:21 +0000 Subject: [PATCH] Optimization to sqlite3WhereExprUsage(). FossilOrigin-Name: 95493058fcf40306727a281f21c5a2a0011b7d02 --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/whereexpr.c | 5 +++-- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/manifest b/manifest index d87a893d49..842f885dfd 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C List\sof\sMATCH\soperator\snames\sin\sisMatchOfColumn()\sshould\sbe\sconstant. -D 2016-08-10T19:43:29.424 +C Optimization\sto\ssqlite3WhereExprUsage(). +D 2016-08-10T20:02:21.519 F Makefile.in cfd8fb987cd7a6af046daa87daa146d5aad0e088 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc d66d0395c38571aab3804f8db0fa20707ae4609a @@ -467,7 +467,7 @@ F src/walker.c 2d2cc7fb0f320f7f415215d7247f3c584141ac09 F src/where.c 5c9df42d50888be8274a5a0eb062eb0629869bd3 F src/whereInt.h e5b939701a7ceffc5a3a8188a37f9746416ebcd0 F src/wherecode.c 99707d11907c71d289ee9553d2d1a22f1fd8ba41 -F src/whereexpr.c 600e6c619d69f5455dd99c69fec8c42ac44e5c9d +F src/whereexpr.c 98ce9f3b8d92b6f741b9f3498f9619695739256e F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 F test/affinity2.test a6d901b436328bd67a79b41bb0ac2663918fe3bd F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2 @@ -1510,7 +1510,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P ebccbd96094ac64de39dbd0d220d3a7afd8cd40e -R fac33bc7c9b64529fad9a6567bc0fbba +P 7319d676aaf95ba7391379f4cdf193b6aa898893 +R 35b146f4e31088e5d413861ddde93f74 U drh -Z d9cf90e53680d487c9bbc0ab8247d4aa +Z 2c745f38c120984510a4f6c92123cc21 diff --git a/manifest.uuid b/manifest.uuid index 1286c1b8bf..99c25a4923 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -7319d676aaf95ba7391379f4cdf193b6aa898893 \ No newline at end of file +95493058fcf40306727a281f21c5a2a0011b7d02 \ No newline at end of file diff --git a/src/whereexpr.c b/src/whereexpr.c index 2461d1ddf8..2768428e2d 100644 --- a/src/whereexpr.c +++ b/src/whereexpr.c @@ -1275,13 +1275,14 @@ void sqlite3WhereClauseClear(WhereClause *pWC){ ** tree. */ Bitmask sqlite3WhereExprUsage(WhereMaskSet *pMaskSet, Expr *p){ - Bitmask mask = 0; + Bitmask mask; if( p==0 ) return 0; if( p->op==TK_COLUMN ){ mask = sqlite3WhereGetMask(pMaskSet, p->iTable); return mask; } - mask = sqlite3WhereExprUsage(pMaskSet, p->pRight); + assert( !ExprHasProperty(p, EP_TokenOnly) ); + mask = p->pRight ? sqlite3WhereExprUsage(pMaskSet, p->pRight) : 0; if( p->pLeft ) mask |= sqlite3WhereExprUsage(pMaskSet, p->pLeft); if( ExprHasProperty(p, EP_xIsSelect) ){ mask |= exprSelectUsage(pMaskSet, p->x.pSelect); -- 2.47.2