Lines Matching refs:pLoop
87 static void explainIndexRange(StrAccum *pStr, WhereLoop *pLoop){ in explainIndexRange() argument
88 Index *pIndex = pLoop->u.btree.pIndex; in explainIndexRange()
89 u16 nEq = pLoop->u.btree.nEq; in explainIndexRange()
90 u16 nSkip = pLoop->nSkip; in explainIndexRange()
93 if( nEq==0 && (pLoop->wsFlags&(WHERE_BTM_LIMIT|WHERE_TOP_LIMIT))==0 ) return; in explainIndexRange()
102 if( pLoop->wsFlags&WHERE_BTM_LIMIT ){ in explainIndexRange()
103 explainAppendTerm(pStr, pIndex, pLoop->u.btree.nBtm, j, i, ">"); in explainIndexRange()
106 if( pLoop->wsFlags&WHERE_TOP_LIMIT ){ in explainIndexRange()
107 explainAppendTerm(pStr, pIndex, pLoop->u.btree.nTop, j, i, "<"); in explainIndexRange()
136 WhereLoop *pLoop; /* The controlling WhereLoop object */ in sqlite3WhereExplainOneScan() local
142 pLoop = pLevel->pWLoop; in sqlite3WhereExplainOneScan()
143 flags = pLoop->wsFlags; in sqlite3WhereExplainOneScan()
147 || ((flags&WHERE_VIRTUALTABLE)==0 && (pLoop->u.btree.nEq>0)) in sqlite3WhereExplainOneScan()
157 assert( pLoop->u.btree.pIndex!=0 ); in sqlite3WhereExplainOneScan()
158 pIdx = pLoop->u.btree.pIndex; in sqlite3WhereExplainOneScan()
176 explainIndexRange(&str, pLoop); in sqlite3WhereExplainOneScan()
204 pLoop->u.vtab.idxNum, pLoop->u.vtab.idxStr); in sqlite3WhereExplainOneScan()
211 if( pLoop->nOut>=10 ){ in sqlite3WhereExplainOneScan()
213 sqlite3LogEstToInt(pLoop->nOut)); in sqlite3WhereExplainOneScan()
247 WhereLoop *pLoop; /* The where loop */ in sqlite3WhereExplainBloomFilter() local
254 pLoop = pLevel->pWLoop; in sqlite3WhereExplainBloomFilter()
255 if( pLoop->wsFlags & WHERE_IPK ){ in sqlite3WhereExplainBloomFilter()
263 for(i=pLoop->nSkip; i<pLoop->u.btree.nEq; i++){ in sqlite3WhereExplainBloomFilter()
264 const char *z = explainIndexColumnName(pLoop->u.btree.pIndex, i); in sqlite3WhereExplainBloomFilter()
265 if( i>pLoop->nSkip ) sqlite3_str_append(&str, " AND ", 5); in sqlite3WhereExplainBloomFilter()
294 WhereLoop *pLoop = pLvl->pWLoop; in sqlite3WhereAddScanStatus() local
295 if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)==0 && pLoop->u.btree.pIndex!=0 ){ in sqlite3WhereAddScanStatus()
296 zObj = pLoop->u.btree.pIndex->zName; in sqlite3WhereAddScanStatus()
301 v, addrExplain, pLvl->addrBody, pLvl->addrVisit, pLoop->nOut, zObj in sqlite3WhereAddScanStatus()
473 WhereLoop *pLoop, /* The current loop */ in removeUnindexableInClauseTerms() argument
492 for(i=iEq; i<pLoop->nLTerm; i++){ in removeUnindexableInClauseTerms()
493 if( pLoop->aLTerm[i]->pExpr==pX ){ in removeUnindexableInClauseTerms()
495 assert( (pLoop->aLTerm[i]->eOperator & (WO_OR|WO_AND))==0 ); in removeUnindexableInClauseTerms()
496 iField = pLoop->aLTerm[i]->u.x.iField - 1; in removeUnindexableInClauseTerms()
583 WhereLoop *pLoop = pLevel->pWLoop; in codeEqualityTerm() local
588 if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)==0 in codeEqualityTerm()
589 && pLoop->u.btree.pIndex!=0 in codeEqualityTerm()
590 && pLoop->u.btree.pIndex->aSortOrder[iEq] in codeEqualityTerm()
600 if( pLoop->aLTerm[i] && pLoop->aLTerm[i]->pExpr==pX ){ in codeEqualityTerm()
605 for(i=iEq;i<pLoop->nLTerm; i++){ in codeEqualityTerm()
606 assert( pLoop->aLTerm[i]!=0 ); in codeEqualityTerm()
607 if( pLoop->aLTerm[i]->pExpr==pX ) nEq++; in codeEqualityTerm()
617 pX = removeUnindexableInClauseTerms(pParse, iEq, pLoop, pX); in codeEqualityTerm()
640 assert( (pLoop->wsFlags & WHERE_MULTI_OR)==0 ); in codeEqualityTerm()
641 pLoop->wsFlags |= WHERE_IN_ABLE; in codeEqualityTerm()
645 if( iEq>0 && (pLoop->wsFlags & WHERE_IN_SEEKSCAN)==0 ){ in codeEqualityTerm()
646 pLoop->wsFlags |= WHERE_IN_EARLYOUT; in codeEqualityTerm()
659 for(i=iEq;i<pLoop->nLTerm; i++){ in codeEqualityTerm()
660 if( pLoop->aLTerm[i]->pExpr==pX ){ in codeEqualityTerm()
685 && (pLoop->wsFlags & WHERE_IN_SEEKSCAN)==0 in codeEqualityTerm()
686 && (pLoop->wsFlags & WHERE_VIRTUALTABLE)!=0 ); in codeEqualityTerm()
688 && (pLoop->wsFlags & (WHERE_IN_SEEKSCAN|WHERE_VIRTUALTABLE))==0 in codeEqualityTerm()
774 WhereLoop *pLoop; /* The WhereLoop object */ in codeAllEqualityTerms() local
781 pLoop = pLevel->pWLoop; in codeAllEqualityTerms()
782 assert( (pLoop->wsFlags & WHERE_VIRTUALTABLE)==0 ); in codeAllEqualityTerms()
783 nEq = pLoop->u.btree.nEq; in codeAllEqualityTerms()
784 nSkip = pLoop->nSkip; in codeAllEqualityTerms()
785 pIdx = pLoop->u.btree.pIndex; in codeAllEqualityTerms()
791 nReg = pLoop->u.btree.nEq + nExtraReg; in codeAllEqualityTerms()
823 pTerm = pLoop->aLTerm[j]; in codeAllEqualityTerms()
840 pTerm = pLoop->aLTerm[j]; in codeAllEqualityTerms()
1028 WhereLoop *pLoop = pLevel->pWLoop; in codeCursorHint() local
1041 sHint.pIdx = pLoop->u.btree.pIndex; in codeCursorHint()
1090 if( pLoop->u.btree.nEq==0 && pTerm!=pEndRange ){ in codeCursorHint()
1091 for(j=0; j<pLoop->nLTerm && pLoop->aLTerm[j]!=pTerm; j++){} in codeCursorHint()
1092 if( j<pLoop->nLTerm ) continue; in codeCursorHint()
1272 WhereLoop *pLoop = pLevel->pWLoop; in filterPullDown() local
1277 if( NEVER(pLoop->prereq & notReady) ) continue; in filterPullDown()
1280 if( pLoop->wsFlags & WHERE_IPK ){ in filterPullDown()
1281 WhereTerm *pTerm = pLoop->aLTerm[0]; in filterPullDown()
1294 u16 nEq = pLoop->u.btree.nEq; in filterPullDown()
1298 assert( pLoop->wsFlags & WHERE_INDEXED ); in filterPullDown()
1299 assert( (pLoop->wsFlags & WHERE_COLUMN_IN)==0 ); in filterPullDown()
1328 WhereLoop *pLoop; /* The WhereLoop object being coded */ in sqlite3WhereCodeOneLoopStart() local
1343 pLoop = pLevel->pWLoop; in sqlite3WhereCodeOneLoopStart()
1353 sqlite3WhereLoopPrint(pLoop, pWC); in sqlite3WhereCodeOneLoopStart()
1410 if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)!=0 ){ in sqlite3WhereCodeOneLoopStart()
1416 int nConstraint = pLoop->nLTerm; in sqlite3WhereCodeOneLoopStart()
1422 pTerm = pLoop->aLTerm[j]; in sqlite3WhereCodeOneLoopStart()
1425 if( SMASKBIT32(j) & pLoop->u.vtab.mHandleIn ){ in sqlite3WhereCodeOneLoopStart()
1438 && pLoop->u.vtab.bOmitOffset in sqlite3WhereCodeOneLoopStart()
1448 sqlite3VdbeAddOp2(v, OP_Integer, pLoop->u.vtab.idxNum, iReg); in sqlite3WhereCodeOneLoopStart()
1451 pLoop->u.vtab.idxStr, in sqlite3WhereCodeOneLoopStart()
1452 pLoop->u.vtab.needFree ? P4_DYNAMIC : P4_STATIC); in sqlite3WhereCodeOneLoopStart()
1454 pLoop->u.vtab.needFree = 0; in sqlite3WhereCodeOneLoopStart()
1457 if( db->mallocFailed ) pLoop->u.vtab.idxStr = 0; in sqlite3WhereCodeOneLoopStart()
1461 assert( (pLoop->wsFlags & WHERE_MULTI_OR)==0 ); in sqlite3WhereCodeOneLoopStart()
1464 pTerm = pLoop->aLTerm[j]; in sqlite3WhereCodeOneLoopStart()
1465 if( j<16 && (pLoop->u.vtab.omitMask>>j)&1 ){ in sqlite3WhereCodeOneLoopStart()
1470 && (SMASKBIT32(j) & pLoop->u.vtab.mHandleIn)==0 in sqlite3WhereCodeOneLoopStart()
1533 if( (pLoop->wsFlags & WHERE_IPK)!=0 in sqlite3WhereCodeOneLoopStart()
1534 && (pLoop->wsFlags & (WHERE_COLUMN_IN|WHERE_COLUMN_EQ))!=0 in sqlite3WhereCodeOneLoopStart()
1541 assert( pLoop->u.btree.nEq==1 ); in sqlite3WhereCodeOneLoopStart()
1542 pTerm = pLoop->aLTerm[0]; in sqlite3WhereCodeOneLoopStart()
1561 }else if( (pLoop->wsFlags & WHERE_IPK)!=0 in sqlite3WhereCodeOneLoopStart()
1562 && (pLoop->wsFlags & WHERE_COLUMN_RANGE)!=0 in sqlite3WhereCodeOneLoopStart()
1573 if( pLoop->wsFlags & WHERE_BTM_LIMIT ) pStart = pLoop->aLTerm[j++]; in sqlite3WhereCodeOneLoopStart()
1574 if( pLoop->wsFlags & WHERE_TOP_LIMIT ) pEnd = pLoop->aLTerm[j++]; in sqlite3WhereCodeOneLoopStart()
1669 }else if( pLoop->wsFlags & WHERE_INDEXED ){ in sqlite3WhereCodeOneLoopStart()
1717 u16 nEq = pLoop->u.btree.nEq; /* Number of == or IN terms */ in sqlite3WhereCodeOneLoopStart()
1718 u16 nBtm = pLoop->u.btree.nBtm; /* Length of BTM vector */ in sqlite3WhereCodeOneLoopStart()
1719 u16 nTop = pLoop->u.btree.nTop; /* Length of TOP vector */ in sqlite3WhereCodeOneLoopStart()
1738 pIdx = pLoop->u.btree.pIndex; in sqlite3WhereCodeOneLoopStart()
1740 assert( nEq>=pLoop->nSkip ); in sqlite3WhereCodeOneLoopStart()
1746 if( pLoop->wsFlags & WHERE_BTM_LIMIT ){ in sqlite3WhereCodeOneLoopStart()
1747 pRangeStart = pLoop->aLTerm[j++]; in sqlite3WhereCodeOneLoopStart()
1748 nExtraReg = MAX(nExtraReg, pLoop->u.btree.nBtm); in sqlite3WhereCodeOneLoopStart()
1751 (pLoop->wsFlags & WHERE_TOP_LIMIT)!=0 ); in sqlite3WhereCodeOneLoopStart()
1753 if( pLoop->wsFlags & WHERE_TOP_LIMIT ){ in sqlite3WhereCodeOneLoopStart()
1754 pRangeEnd = pLoop->aLTerm[j++]; in sqlite3WhereCodeOneLoopStart()
1755 nExtraReg = MAX(nExtraReg, pLoop->u.btree.nTop); in sqlite3WhereCodeOneLoopStart()
1789 if( (pLoop->wsFlags & (WHERE_TOP_LIMIT|WHERE_BTM_LIMIT))==0 in sqlite3WhereCodeOneLoopStart()
1790 && (pLoop->wsFlags & WHERE_BIGNULL_SORT)!=0 in sqlite3WhereCodeOneLoopStart()
1794 testcase( pLoop->nSkip>0 ); in sqlite3WhereCodeOneLoopStart()
1814 if( iLevel>0 && (pLoop->wsFlags & WHERE_IN_SEEKSCAN)!=0 ){ in sqlite3WhereCodeOneLoopStart()
1874 if( pLoop->nSkip>0 && nConstraint==pLoop->nSkip ){ in sqlite3WhereCodeOneLoopStart()
1892 if( (pLoop->wsFlags & WHERE_IN_SEEKSCAN)!=0 && op==OP_SeekGE ){ in sqlite3WhereCodeOneLoopStart()
2024 if( (pLoop->wsFlags & WHERE_IN_EARLYOUT)!=0 ){ in sqlite3WhereCodeOneLoopStart()
2029 omitTable = (pLoop->wsFlags & WHERE_IDX_ONLY)!=0 in sqlite3WhereCodeOneLoopStart()
2066 if( pLoop->wsFlags & WHERE_ONEROW ){ in sqlite3WhereCodeOneLoopStart()
2074 pLevel->p3 = (pLoop->wsFlags&WHERE_UNQ_WANTED)!=0 ? 1:0; in sqlite3WhereCodeOneLoopStart()
2075 if( (pLoop->wsFlags & WHERE_CONSTRAINT)==0 ){ in sqlite3WhereCodeOneLoopStart()
2084 if( pLoop->wsFlags & WHERE_MULTI_OR ){ in sqlite3WhereCodeOneLoopStart()
2143 pTerm = pLoop->aLTerm[0]; in sqlite3WhereCodeOneLoopStart()
2391 assert( pLevel->pWLoop==pLoop ); in sqlite3WhereCodeOneLoopStart()
2392 assert( (pLoop->wsFlags & WHERE_MULTI_OR)!=0 ); in sqlite3WhereCodeOneLoopStart()
2393 assert( (pLoop->wsFlags & WHERE_IN_ABLE)==0 ); in sqlite3WhereCodeOneLoopStart()
2695 WhereLoop *pLoop = pLevel->pWLoop; in sqlite3WhereRightJoinLoop() local
2714 mAll |= pLoop->maskSelf; in sqlite3WhereRightJoinLoop()