diff options
author | drh <> | 2024-05-29 14:04:52 +0000 |
---|---|---|
committer | drh <> | 2024-05-29 14:04:52 +0000 |
commit | eccb42eb0e522646d54b0e1a87d872339a7613dc (patch) | |
tree | 0ce4bd5af3c494e9dbc8f52a5e8d079422d526d9 /src | |
parent | bb24c75b418a6f75a2cab5ab5674b2810e466d35 (diff) | |
download | sqlite-eccb42eb0e522646d54b0e1a87d872339a7613dc.tar.gz sqlite-eccb42eb0e522646d54b0e1a87d872339a7613dc.zip |
Small performance enhancement in wherePathSolver()
FossilOrigin-Name: bdab69641df4704f7b080cf7841bbf39da9160222f7b664a79ed662b70ca7b0a
Diffstat (limited to 'src')
-rw-r--r-- | src/where.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/where.c b/src/where.c index 5a5fd7b28..fe2e39b9c 100644 --- a/src/where.c +++ b/src/where.c @@ -5457,7 +5457,10 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){ /* At this point, pWLoop is a candidate to be the next loop. ** Compute its cost */ - rUnsorted = sqlite3LogEstAdd(pWLoop->rSetup,pWLoop->rRun + pFrom->nRow); + rUnsorted = pWLoop->rRun + pFrom->nRow; + if( pWLoop->rSetup ){ + rUnsorted = sqlite3LogEstAdd(pWLoop->rSetup, rUnsorted); + } rUnsorted = sqlite3LogEstAdd(rUnsorted, pFrom->rUnsorted); nOut = pFrom->nRow + pWLoop->nOut; maskNew = pFrom->maskLoop | pWLoop->maskSelf; @@ -5502,6 +5505,7 @@ static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){ ** to (pTo->isOrdered==(-1))==(isOrdered==(-1))" for the range ** of legal values for isOrdered, -1..64. */ + assert( nTo>0 ); for(jj=0, pTo=aTo; jj<nTo; jj++, pTo++){ if( pTo->maskLoop==maskNew && ((pTo->isOrdered^isOrdered)&0x80)==0 |