aboutsummaryrefslogtreecommitdiff
path: root/src/where.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/where.c')
-rw-r--r--src/where.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/where.c b/src/where.c
index 18b4a3782..32fa61c7f 100644
--- a/src/where.c
+++ b/src/where.c
@@ -5794,16 +5794,16 @@ WhereInfo *sqlite3WhereBegin(
if( pOrderBy ) tabUsed |= exprListTableUsage(pMaskSet, pOrderBy);
while( pWInfo->nLevel>=2 ){
pLoop = pWInfo->a[pWInfo->nLevel-1].pWLoop;
- if( ((wctrlFlags & WHERE_WANT_DISTINCT)!=0
- || (pLoop->wsFlags & WHERE_ONEROW)!=0)
- && (tabUsed & pLoop->maskSelf)==0
+ if( (pWInfo->pTabList->a[pLoop->iTab].jointype & JT_LEFT)==0 ) break;
+ if( (wctrlFlags & WHERE_WANT_DISTINCT)==0
+ && (pLoop->wsFlags & WHERE_ONEROW)==0
){
- WHERETRACE(0xffff, ("-> drop loop %c not used\n", pLoop->cId));
- pWInfo->nLevel--;
- nTabList--;
- }else{
break;
}
+ if( (tabUsed & pLoop->maskSelf)!=0 ) break;
+ WHERETRACE(0xffff, ("-> drop loop %c not used\n", pLoop->cId));
+ pWInfo->nLevel--;
+ nTabList--;
}
}
WHERETRACE(0xffff,("*** Optimizer Finished ***\n"));