Lines Matching refs:pLevel

124   WhereLevel *pLevel,             /* Scan to write OP_Explain opcode for */  in sqlite3WhereExplainOneScan()  argument
132 SrcItem *pItem = &pTabList->a[pLevel->iFrom]; in sqlite3WhereExplainOneScan()
142 pLoop = pLevel->pWLoop; in sqlite3WhereExplainOneScan()
239 const WhereLevel *pLevel /* Bloom filter on this level */ in sqlite3WhereExplainBloomFilter() argument
242 SrcItem *pItem = &pWInfo->pTabList->a[pLevel->iFrom]; in sqlite3WhereExplainBloomFilter()
254 pLoop = pLevel->pWLoop; in sqlite3WhereExplainBloomFilter()
349 static void disableTerm(WhereLevel *pLevel, WhereTerm *pTerm){ in disableTerm() argument
353 && (pLevel->iLeftJoin==0 || ExprHasProperty(pTerm->pExpr, EP_OuterON)) in disableTerm()
354 && (pLevel->notReady & pTerm->prereqAll)==0 in disableTerm()
562 WhereLevel *pLevel, /* The level of the FROM clause we are working on */ in codeEqualityTerm() argument
571 assert( pLevel->pWLoop->aLTerm[iEq]==pTerm ); in codeEqualityTerm()
583 WhereLoop *pLoop = pLevel->pWLoop; in codeEqualityTerm()
601 disableTerm(pLevel, pTerm); in codeEqualityTerm()
642 if( pLevel->u.in.nIn==0 ){ in codeEqualityTerm()
643 pLevel->addrNxt = sqlite3VdbeMakeLabel(pParse); in codeEqualityTerm()
649 i = pLevel->u.in.nIn; in codeEqualityTerm()
650 pLevel->u.in.nIn += nEq; in codeEqualityTerm()
651 pLevel->u.in.aInLoop = in codeEqualityTerm()
653 pLevel->u.in.aInLoop, in codeEqualityTerm()
654 sizeof(pLevel->u.in.aInLoop[0])*pLevel->u.in.nIn); in codeEqualityTerm()
655 pIn = pLevel->u.in.aInLoop; in codeEqualityTerm()
690 sqlite3VdbeAddOp3(v, OP_SeekHit, pLevel->iIdxCur, 0, iEq); in codeEqualityTerm()
693 pLevel->u.in.nIn = 0; in codeEqualityTerm()
708 if( (pLevel->pWLoop->wsFlags & WHERE_TRANSCONS)==0 in codeEqualityTerm()
711 disableTerm(pLevel, pTerm); in codeEqualityTerm()
764 WhereLevel *pLevel, /* Which nested loop of the FROM we are coding */ in codeAllEqualityTerms() argument
781 pLoop = pLevel->pWLoop; in codeAllEqualityTerms()
798 int iIdxCur = pLevel->iIdxCur; in codeAllEqualityTerms()
805 assert( pLevel->addrSkip==0 ); in codeAllEqualityTerms()
806 pLevel->addrSkip = sqlite3VdbeAddOp4Int(v, (bRev?OP_SeekLT:OP_SeekGT), in codeAllEqualityTerms()
829 r1 = codeEqualityTerm(pParse, pTerm, pLevel, j, bRev, regBase+j); in codeAllEqualityTerms()
852 sqlite3VdbeAddOp2(v, OP_IsNull, regBase+j, pLevel->addrBrk); in codeAllEqualityTerms()
890 WhereLevel *pLevel, /* The loop that contains the LIKE operator */ in whereLikeOptimizationStringFixup() argument
895 assert( pLevel->iLikeRepCntr>0 ); in whereLikeOptimizationStringFixup()
900 pOp->p3 = (int)(pLevel->iLikeRepCntr>>1); /* Register holding counter */ in whereLikeOptimizationStringFixup()
901 pOp->p5 = (u8)(pLevel->iLikeRepCntr&1); /* ASC or DESC */ in whereLikeOptimizationStringFixup()
1021 WhereLevel *pLevel, /* Which loop to provide hints for */ in codeCursorHint() argument
1028 WhereLoop *pLoop = pLevel->pWLoop; in codeCursorHint()
1037 iCur = pLevel->iTabCur; in codeCursorHint()
1038 assert( iCur==pWInfo->pTabList->a[pLevel->iFrom].iCursor ); in codeCursorHint()
1040 sHint.iIdxCur = pLevel->iIdxCur; in codeCursorHint()
1049 if( pTerm->prereqAll & pLevel->notReady ) continue; in codeCursorHint()
1271 WhereLevel *pLevel = &pWInfo->a[iLevel]; in filterPullDown() local
1272 WhereLoop *pLoop = pLevel->pWLoop; in filterPullDown()
1273 if( pLevel->regFilter==0 ) continue; in filterPullDown()
1274 if( pLevel->pWLoop->nSkip ) continue; in filterPullDown()
1278 assert( pLevel->addrBrk==0 ); in filterPullDown()
1279 pLevel->addrBrk = addrNxt; in filterPullDown()
1287 regRowid = codeEqualityTerm(pParse, pTerm, pLevel, 0, 0, regRowid); in filterPullDown()
1290 sqlite3VdbeAddOp4Int(pParse->pVdbe, OP_Filter, pLevel->regFilter, in filterPullDown()
1300 r1 = codeAllEqualityTerms(pParse,pLevel,0,0,&zStartAff); in filterPullDown()
1303 sqlite3VdbeAddOp4Int(pParse->pVdbe, OP_Filter, pLevel->regFilter, in filterPullDown()
1307 pLevel->regFilter = 0; in filterPullDown()
1308 pLevel->addrBrk = 0; in filterPullDown()
1321 WhereLevel *pLevel, /* The current level pointer */ in sqlite3WhereCodeOneLoopStart() argument
1343 pLoop = pLevel->pWLoop; in sqlite3WhereCodeOneLoopStart()
1344 pTabItem = &pWInfo->pTabList->a[pLevel->iFrom]; in sqlite3WhereCodeOneLoopStart()
1346 pLevel->notReady = notReady & ~sqlite3WhereGetMask(&pWInfo->sMaskSet, iCur); in sqlite3WhereCodeOneLoopStart()
1352 iLevel, pWInfo->nLevel, (u64)notReady, pLevel->iFrom); in sqlite3WhereCodeOneLoopStart()
1375 addrBrk = pLevel->addrBrk = pLevel->addrNxt = sqlite3VdbeMakeLabel(pParse); in sqlite3WhereCodeOneLoopStart()
1376 addrCont = pLevel->addrCont = sqlite3VdbeMakeLabel(pParse); in sqlite3WhereCodeOneLoopStart()
1383 || pLevel->iFrom>0 || (pTabItem[0].fg.jointype & JT_LEFT)==0 in sqlite3WhereCodeOneLoopStart()
1385 if( pLevel->iFrom>0 && (pTabItem[0].fg.jointype & JT_LEFT)!=0 ){ in sqlite3WhereCodeOneLoopStart()
1386 pLevel->iLeftJoin = ++pParse->nMem; in sqlite3WhereCodeOneLoopStart()
1387 sqlite3VdbeAddOp2(v, OP_Integer, 0, pLevel->iLeftJoin); in sqlite3WhereCodeOneLoopStart()
1403 pLevel->p2 = sqlite3VdbeAddOp2(v, OP_Yield, regYield, addrBrk); in sqlite3WhereCodeOneLoopStart()
1406 pLevel->op = OP_Goto; in sqlite3WhereCodeOneLoopStart()
1419 addrNotFound = pLevel->addrBrk; in sqlite3WhereCodeOneLoopStart()
1431 codeEqualityTerm(pParse, pTerm, pLevel, j, bRev, iTarget); in sqlite3WhereCodeOneLoopStart()
1432 addrNotFound = pLevel->addrNxt; in sqlite3WhereCodeOneLoopStart()
1458 pLevel->p1 = iCur; in sqlite3WhereCodeOneLoopStart()
1459 pLevel->op = pWInfo->eOnePass ? OP_Noop : OP_VNext; in sqlite3WhereCodeOneLoopStart()
1460 pLevel->p2 = sqlite3VdbeCurrentAddr(v); in sqlite3WhereCodeOneLoopStart()
1466 disableTerm(pLevel, pTerm); in sqlite3WhereCodeOneLoopStart()
1483 for(iIn=0; ALWAYS(iIn<pLevel->u.in.nIn); iIn++){ in sqlite3WhereCodeOneLoopStart()
1484 pOp = sqlite3VdbeGetOp(v, pLevel->u.in.aInLoop[iIn].addrInTop); in sqlite3WhereCodeOneLoopStart()
1514 pParse, pCompare, pLevel->addrCont, SQLITE_JUMPIFNULL in sqlite3WhereCodeOneLoopStart()
1547 iRowidReg = codeEqualityTerm(pParse, pTerm, pLevel, 0, bRev, iReleaseReg); in sqlite3WhereCodeOneLoopStart()
1549 addrNxt = pLevel->addrNxt; in sqlite3WhereCodeOneLoopStart()
1550 if( pLevel->regFilter ){ in sqlite3WhereCodeOneLoopStart()
1553 sqlite3VdbeAddOp4Int(v, OP_Filter, pLevel->regFilter, addrNxt, in sqlite3WhereCodeOneLoopStart()
1560 pLevel->op = OP_Noop; in sqlite3WhereCodeOneLoopStart()
1581 codeCursorHint(pTabItem, pWInfo, pLevel, pEnd); in sqlite3WhereCodeOneLoopStart()
1619 disableTerm(pLevel, pStart); in sqlite3WhereCodeOneLoopStart()
1651 disableTerm(pLevel, pEnd); in sqlite3WhereCodeOneLoopStart()
1655 pLevel->op = bRev ? OP_Prev : OP_Next; in sqlite3WhereCodeOneLoopStart()
1656 pLevel->p1 = iCur; in sqlite3WhereCodeOneLoopStart()
1657 pLevel->p2 = start; in sqlite3WhereCodeOneLoopStart()
1658 assert( pLevel->p5==0 ); in sqlite3WhereCodeOneLoopStart()
1739 iIdxCur = pLevel->iIdxCur; in sqlite3WhereCodeOneLoopStart()
1760 pLevel->iLikeRepCntr = (u32)++pParse->nMem; in sqlite3WhereCodeOneLoopStart()
1761 sqlite3VdbeAddOp2(v, OP_Integer, 1, (int)pLevel->iLikeRepCntr); in sqlite3WhereCodeOneLoopStart()
1763 pLevel->addrLikeRep = sqlite3VdbeCurrentAddr(v); in sqlite3WhereCodeOneLoopStart()
1769 pLevel->iLikeRepCntr <<=1; in sqlite3WhereCodeOneLoopStart()
1770 pLevel->iLikeRepCntr |= bRev ^ (pIdx->aSortOrder[nEq]==SQLITE_SO_DESC); in sqlite3WhereCodeOneLoopStart()
1797 pLevel->regBignull = regBignull = ++pParse->nMem; in sqlite3WhereCodeOneLoopStart()
1798 if( pLevel->iLeftJoin ){ in sqlite3WhereCodeOneLoopStart()
1801 pLevel->addrBignull = sqlite3VdbeMakeLabel(pParse); in sqlite3WhereCodeOneLoopStart()
1824 codeCursorHint(pTabItem, pWInfo, pLevel, pRangeEnd); in sqlite3WhereCodeOneLoopStart()
1825 regBase = codeAllEqualityTerms(pParse,pLevel,bRev,nExtraReg,&zStartAff); in sqlite3WhereCodeOneLoopStart()
1830 addrNxt = (regBignull ? pLevel->addrBignull : pLevel->addrNxt); in sqlite3WhereCodeOneLoopStart()
1845 whereLikeOptimizationStringFixup(v, pLevel, pRangeStart); in sqlite3WhereCodeOneLoopStart()
1858 disableTerm(pLevel, pRangeStart); in sqlite3WhereCodeOneLoopStart()
1883 if( pLevel->regFilter ){ in sqlite3WhereCodeOneLoopStart()
1884 sqlite3VdbeAddOp4Int(v, OP_Filter, pLevel->regFilter, addrNxt, in sqlite3WhereCodeOneLoopStart()
1942 assert( pLevel->p2==0 ); in sqlite3WhereCodeOneLoopStart()
1953 pLevel->p2 = sqlite3VdbeCurrentAddr(v); in sqlite3WhereCodeOneLoopStart()
1956 whereLikeOptimizationStringFixup(v, pLevel, pRangeEnd); in sqlite3WhereCodeOneLoopStart()
1973 disableTerm(pLevel, pRangeEnd); in sqlite3WhereCodeOneLoopStart()
1988 if( pLevel->p2==0 ) pLevel->p2 = sqlite3VdbeCurrentAddr(v); in sqlite3WhereCodeOneLoopStart()
2046 if( pLevel->iLeftJoin==0 ){ in sqlite3WhereCodeOneLoopStart()
2067 pLevel->op = OP_Noop; in sqlite3WhereCodeOneLoopStart()
2069 pLevel->op = OP_Prev; in sqlite3WhereCodeOneLoopStart()
2071 pLevel->op = OP_Next; in sqlite3WhereCodeOneLoopStart()
2073 pLevel->p1 = iIdxCur; in sqlite3WhereCodeOneLoopStart()
2074 pLevel->p3 = (pLoop->wsFlags&WHERE_UNQ_WANTED)!=0 ? 1:0; in sqlite3WhereCodeOneLoopStart()
2076 pLevel->p5 = SQLITE_STMTSTATUS_FULLSCAN_STEP; in sqlite3WhereCodeOneLoopStart()
2078 assert( pLevel->p5==0 ); in sqlite3WhereCodeOneLoopStart()
2148 pLevel->op = OP_Return; in sqlite3WhereCodeOneLoopStart()
2149 pLevel->p1 = regReturn; in sqlite3WhereCodeOneLoopStart()
2167 memcpy(&pOrTab->a[k], &origSrc[pLevel[k].iFrom], sizeof(pOrTab->a[k])); in sqlite3WhereCodeOneLoopStart()
2391 assert( pLevel->pWLoop==pLoop ); in sqlite3WhereCodeOneLoopStart()
2394 pLevel->u.pCoveringIdx = pCov; in sqlite3WhereCodeOneLoopStart()
2395 if( pCov ) pLevel->iIdxCur = iCovCur; in sqlite3WhereCodeOneLoopStart()
2401 sqlite3VdbeGoto(v, pLevel->addrBrk); in sqlite3WhereCodeOneLoopStart()
2409 assert( pLevel->op==OP_Return ); in sqlite3WhereCodeOneLoopStart()
2410 pLevel->p2 = sqlite3VdbeCurrentAddr(v); in sqlite3WhereCodeOneLoopStart()
2413 if( !untestedTerms ) disableTerm(pLevel, pTerm); in sqlite3WhereCodeOneLoopStart()
2427 pLevel->op = OP_Noop; in sqlite3WhereCodeOneLoopStart()
2429 codeCursorHint(pTabItem, pWInfo, pLevel, 0); in sqlite3WhereCodeOneLoopStart()
2430 pLevel->op = aStep[bRev]; in sqlite3WhereCodeOneLoopStart()
2431 pLevel->p1 = iCur; in sqlite3WhereCodeOneLoopStart()
2432 pLevel->p2 = 1 + sqlite3VdbeAddOp2(v, aStart[bRev], iCur, addrHalt); in sqlite3WhereCodeOneLoopStart()
2435 pLevel->p5 = SQLITE_STMTSTATUS_FULLSCAN_STEP; in sqlite3WhereCodeOneLoopStart()
2440 pLevel->addrVisit = sqlite3VdbeCurrentAddr(v); in sqlite3WhereCodeOneLoopStart()
2466 if( (pTerm->prereqAll & pLevel->notReady)!=0 ){ in sqlite3WhereCodeOneLoopStart()
2484 if( m & pLevel->notReady ){ in sqlite3WhereCodeOneLoopStart()
2490 if( iLoop==1 && !sqlite3ExprCoveredByIndex(pE, pLevel->iTabCur, pIdx) ){ in sqlite3WhereCodeOneLoopStart()
2508 u32 x = pLevel->iLikeRepCntr; in sqlite3WhereCodeOneLoopStart()
2557 assert( (pTerm->prereqRight & pLevel->notReady)!=0 ); in sqlite3WhereCodeOneLoopStart()
2582 if( pLevel->pRJ ){ in sqlite3WhereCodeOneLoopStart()
2587 WhereRightJoin *pRJ = pLevel->pRJ; in sqlite3WhereCodeOneLoopStart()
2594 pTab = pWInfo->pTabList->a[pLevel->iFrom].pTab; in sqlite3WhereCodeOneLoopStart()
2597 sqlite3ExprCodeGetColumnOfTable(v, pTab, pLevel->iTabCur, -1, r+1); in sqlite3WhereCodeOneLoopStart()
2623 if( pLevel->iLeftJoin ){ in sqlite3WhereCodeOneLoopStart()
2624 pLevel->addrFirst = sqlite3VdbeCurrentAddr(v); in sqlite3WhereCodeOneLoopStart()
2625 sqlite3VdbeAddOp2(v, OP_Integer, 1, pLevel->iLeftJoin); in sqlite3WhereCodeOneLoopStart()
2627 if( pLevel->pRJ==0 ){ in sqlite3WhereCodeOneLoopStart()
2632 if( pLevel->pRJ ){ in sqlite3WhereCodeOneLoopStart()
2639 WhereRightJoin *pRJ = pLevel->pRJ; in sqlite3WhereCodeOneLoopStart()
2655 if( (pTerm->prereqAll & pLevel->notReady)!=0 ){ in sqlite3WhereCodeOneLoopStart()
2674 iLevel, (u64)pLevel->notReady); in sqlite3WhereCodeOneLoopStart()
2677 return pLevel->notReady; in sqlite3WhereCodeOneLoopStart()
2687 WhereLevel *pLevel in sqlite3WhereRightJoinLoop() argument
2691 WhereRightJoin *pRJ = pLevel->pRJ; in sqlite3WhereRightJoinLoop()
2695 WhereLoop *pLoop = pLevel->pWLoop; in sqlite3WhereRightJoinLoop()
2696 SrcItem *pTabItem = &pWInfo->pTabList->a[pLevel->iFrom]; in sqlite3WhereRightJoinLoop()
2737 int iCur = pLevel->iTabCur; in sqlite3WhereRightJoinLoop()