Lines Matching defs:pLevel
151829 WhereLevel *pLevel, /* Scan to write OP_Explain opcode for */
151835 const WhereLevel *pLevel /* Bloom filter on this level */
151856 WhereLevel *pLevel, /* The current level pointer */
151862 WhereLevel *pLevel
152000 ** Argument pLevel describes a strategy for scanning table pTab. This
152042 ** is added to the output to describe the table scan strategy in pLevel.
152050 WhereLevel *pLevel, /* Scan to write OP_Explain opcode for */
152058 SrcItem *pItem = &pTabList->a[pLevel->iFrom];
152068 pLoop = pLevel->pWLoop;
152165 const WhereLevel *pLevel /* Bloom filter on this level */
152168 SrcItem *pItem = &pWInfo->pTabList->a[pLevel->iFrom];
152180 pLoop = pLevel->pWLoop;
152275 static void disableTerm(WhereLevel *pLevel, WhereTerm *pTerm){
152279 && (pLevel->iLeftJoin==0 || ExprHasProperty(pTerm->pExpr, EP_OuterON))
152280 && (pLevel->notReady & pTerm->prereqAll)==0
152488 WhereLevel *pLevel, /* The level of the FROM clause we are working on */
152497 assert( pLevel->pWLoop->aLTerm[iEq]==pTerm );
152509 WhereLoop *pLoop = pLevel->pWLoop;
152527 disableTerm(pLevel, pTerm);
152568 if( pLevel->u.in.nIn==0 ){
152569 pLevel->addrNxt = sqlite3VdbeMakeLabel(pParse);
152575 i = pLevel->u.in.nIn;
152576 pLevel->u.in.nIn += nEq;
152577 pLevel->u.in.aInLoop =
152579 pLevel->u.in.aInLoop,
152580 sizeof(pLevel->u.in.aInLoop[0])*pLevel->u.in.nIn);
152581 pIn = pLevel->u.in.aInLoop;
152616 sqlite3VdbeAddOp3(v, OP_SeekHit, pLevel->iIdxCur, 0, iEq);
152619 pLevel->u.in.nIn = 0;
152634 if( (pLevel->pWLoop->wsFlags & WHERE_TRANSCONS)==0
152637 disableTerm(pLevel, pTerm);
152657 ** The only thing it does is allocate the pLevel->iMem memory cell and
152690 WhereLevel *pLevel, /* Which nested loop of the FROM we are coding */
152707 pLoop = pLevel->pWLoop;
152724 int iIdxCur = pLevel->iIdxCur;
152731 assert( pLevel->addrSkip==0 );
152732 pLevel->addrSkip = sqlite3VdbeAddOp4Int(v, (bRev?OP_SeekLT:OP_SeekGT),
152755 r1 = codeEqualityTerm(pParse, pTerm, pLevel, j, bRev, regBase+j);
152778 sqlite3VdbeAddOp2(v, OP_IsNull, regBase+j, pLevel->addrBrk);
152816 WhereLevel *pLevel, /* The loop that contains the LIKE operator */
152821 assert( pLevel->iLikeRepCntr>0 );
152826 pOp->p3 = (int)(pLevel->iLikeRepCntr>>1); /* Register holding counter */
152827 pOp->p5 = (u8)(pLevel->iLikeRepCntr&1); /* ASC or DESC */
152947 WhereLevel *pLevel, /* Which loop to provide hints for */
152954 WhereLoop *pLoop = pLevel->pWLoop;
152963 iCur = pLevel->iTabCur;
152964 assert( iCur==pWInfo->pTabList->a[pLevel->iFrom].iCursor );
152966 sHint.iIdxCur = pLevel->iIdxCur;
152975 if( pTerm->prereqAll & pLevel->notReady ) continue;
153197 WhereLevel *pLevel = &pWInfo->a[iLevel];
153198 WhereLoop *pLoop = pLevel->pWLoop;
153199 if( pLevel->regFilter==0 ) continue;
153200 if( pLevel->pWLoop->nSkip ) continue;
153202 ** vvvvv--' pLevel->regFilter if this were true. */
153204 assert( pLevel->addrBrk==0 );
153205 pLevel->addrBrk = addrNxt;
153213 regRowid = codeEqualityTerm(pParse, pTerm, pLevel, 0, 0, regRowid);
153216 sqlite3VdbeAddOp4Int(pParse->pVdbe, OP_Filter, pLevel->regFilter,
153226 r1 = codeAllEqualityTerms(pParse,pLevel,0,0,&zStartAff);
153229 sqlite3VdbeAddOp4Int(pParse->pVdbe, OP_Filter, pLevel->regFilter,
153233 pLevel->regFilter = 0;
153234 pLevel->addrBrk = 0;
153247 WhereLevel *pLevel, /* The current level pointer */
153269 pLoop = pLevel->pWLoop;
153270 pTabItem = &pWInfo->pTabList->a[pLevel->iFrom];
153272 pLevel->notReady = notReady & ~sqlite3WhereGetMask(&pWInfo->sMaskSet, iCur);
153278 iLevel, pWInfo->nLevel, (u64)notReady, pLevel->iFrom);
153301 addrBrk = pLevel->addrBrk = pLevel->addrNxt = sqlite3VdbeMakeLabel(pParse);
153302 addrCont = pLevel->addrCont = sqlite3VdbeMakeLabel(pParse);
153309 || pLevel->iFrom>0 || (pTabItem[0].fg.jointype & JT_LEFT)==0
153311 if( pLevel->iFrom>0 && (pTabItem[0].fg.jointype & JT_LEFT)!=0 ){
153312 pLevel->iLeftJoin = ++pParse->nMem;
153313 sqlite3VdbeAddOp2(v, OP_Integer, 0, pLevel->iLeftJoin);
153329 pLevel->p2 = sqlite3VdbeAddOp2(v, OP_Yield, regYield, addrBrk);
153332 pLevel->op = OP_Goto;
153345 addrNotFound = pLevel->addrBrk;
153357 codeEqualityTerm(pParse, pTerm, pLevel, j, bRev, iTarget);
153358 addrNotFound = pLevel->addrNxt;
153384 pLevel->p1 = iCur;
153385 pLevel->op = pWInfo->eOnePass ? OP_Noop : OP_VNext;
153386 pLevel->p2 = sqlite3VdbeCurrentAddr(v);
153392 disableTerm(pLevel, pTerm);
153409 for(iIn=0; ALWAYS(iIn<pLevel->u.in.nIn); iIn++){
153410 pOp = sqlite3VdbeGetOp(v, pLevel->u.in.aInLoop[iIn].addrInTop);
153440 pParse, pCompare, pLevel->addrCont, SQLITE_JUMPIFNULL
153473 iRowidReg = codeEqualityTerm(pParse, pTerm, pLevel, 0, bRev, iReleaseReg);
153475 addrNxt = pLevel->addrNxt;
153476 if( pLevel->regFilter ){
153479 sqlite3VdbeAddOp4Int(v, OP_Filter, pLevel->regFilter, addrNxt,
153486 pLevel->op = OP_Noop;
153507 codeCursorHint(pTabItem, pWInfo, pLevel, pEnd);
153545 disableTerm(pLevel, pStart);
153577 disableTerm(pLevel, pEnd);
153581 pLevel->op = bRev ? OP_Prev : OP_Next;
153582 pLevel->p1 = iCur;
153583 pLevel->p2 = start;
153584 assert( pLevel->p5==0 );
153665 iIdxCur = pLevel->iIdxCur;
153686 pLevel->iLikeRepCntr = (u32)++pParse->nMem;
153687 sqlite3VdbeAddOp2(v, OP_Integer, 1, (int)pLevel->iLikeRepCntr);
153689 pLevel->addrLikeRep = sqlite3VdbeCurrentAddr(v);
153695 pLevel->iLikeRepCntr <<=1;
153696 pLevel->iLikeRepCntr |= bRev ^ (pIdx->aSortOrder[nEq]==SQLITE_SO_DESC);
153723 pLevel->regBignull = regBignull = ++pParse->nMem;
153724 if( pLevel->iLeftJoin ){
153727 pLevel->addrBignull = sqlite3VdbeMakeLabel(pParse);
153750 codeCursorHint(pTabItem, pWInfo, pLevel, pRangeEnd);
153751 regBase = codeAllEqualityTerms(pParse,pLevel,bRev,nExtraReg,&zStartAff);
153756 addrNxt = (regBignull ? pLevel->addrBignull : pLevel->addrNxt);
153771 whereLikeOptimizationStringFixup(v, pLevel, pRangeStart);
153784 disableTerm(pLevel, pRangeStart);
153809 if( pLevel->regFilter ){
153810 sqlite3VdbeAddOp4Int(v, OP_Filter, pLevel->regFilter, addrNxt,
153868 assert( pLevel->p2==0 );
153879 pLevel->p2 = sqlite3VdbeCurrentAddr(v);
153882 whereLikeOptimizationStringFixup(v, pLevel, pRangeEnd);
153899 disableTerm(pLevel, pRangeEnd);
153914 if( pLevel->p2==0 ) pLevel->p2 = sqlite3VdbeCurrentAddr(v);
153972 if( pLevel->iLeftJoin==0 ){
153993 pLevel->op = OP_Noop;
153995 pLevel->op = OP_Prev;
153997 pLevel->op = OP_Next;
153999 pLevel->p1 = iIdxCur;
154000 pLevel->p3 = (pLoop->wsFlags&WHERE_UNQ_WANTED)!=0 ? 1:0;
154002 pLevel->p5 = SQLITE_STMTSTATUS_FULLSCAN_STEP;
154004 assert( pLevel->p5==0 );
154074 pLevel->op = OP_Return;
154075 pLevel->p1 = regReturn;
154093 memcpy(&pOrTab->a[k], &origSrc[pLevel[k].iFrom], sizeof(pOrTab->a[k]));
154317 assert( pLevel->pWLoop==pLoop );
154320 pLevel->u.pCoveringIdx = pCov;
154321 if( pCov ) pLevel->iIdxCur = iCovCur;
154327 sqlite3VdbeGoto(v, pLevel->addrBrk);
154335 assert( pLevel->op==OP_Return );
154336 pLevel->p2 = sqlite3VdbeCurrentAddr(v);
154339 if( !untestedTerms ) disableTerm(pLevel, pTerm);
154353 pLevel->op = OP_Noop;
154355 codeCursorHint(pTabItem, pWInfo, pLevel, 0);
154356 pLevel->op = aStep[bRev];
154357 pLevel->p1 = iCur;
154358 pLevel->p2 = 1 + sqlite3VdbeAddOp2(v, aStart[bRev], iCur, addrHalt);
154361 pLevel->p5 = SQLITE_STMTSTATUS_FULLSCAN_STEP;
154366 pLevel->addrVisit = sqlite3VdbeCurrentAddr(v);
154392 if( (pTerm->prereqAll & pLevel->notReady)!=0 ){
154410 if( m & pLevel->notReady ){
154416 if( iLoop==1 && !sqlite3ExprCoveredByIndex(pE, pLevel->iTabCur, pIdx) ){
154434 u32 x = pLevel->iLikeRepCntr;
154483 assert( (pTerm->prereqRight & pLevel->notReady)!=0 );
154508 if( pLevel->pRJ ){
154513 WhereRightJoin *pRJ = pLevel->pRJ;
154520 pTab = pWInfo->pTabList->a[pLevel->iFrom].pTab;
154523 sqlite3ExprCodeGetColumnOfTable(v, pTab, pLevel->iTabCur, -1, r+1);
154549 if( pLevel->iLeftJoin ){
154550 pLevel->addrFirst = sqlite3VdbeCurrentAddr(v);
154551 sqlite3VdbeAddOp2(v, OP_Integer, 1, pLevel->iLeftJoin);
154553 if( pLevel->pRJ==0 ){
154558 if( pLevel->pRJ ){
154565 WhereRightJoin *pRJ = pLevel->pRJ;
154581 if( (pTerm->prereqAll & pLevel->notReady)!=0 ){
154600 iLevel, (u64)pLevel->notReady);
154603 return pLevel->notReady;
154613 WhereLevel *pLevel
154617 WhereRightJoin *pRJ = pLevel->pRJ;
154621 WhereLoop *pLoop = pLevel->pWLoop;
154622 SrcItem *pTabItem = &pWInfo->pTabList->a[pLevel->iFrom];
154663 int iCur = pLevel->iTabCur;
157367 ** and to set up the WhereLevel object pLevel so that the code generator
157375 WhereLevel *pLevel /* Write new index here */
157412 pLoop = pLevel->pWLoop;
157523 assert( pLevel->iIdxCur>=0 );
157524 pLevel->iIdxCur = pParse->nTab++;
157525 sqlite3VdbeAddOp2(v, OP_OpenAutoindex, pLevel->iIdxCur, nKeyCol+1);
157529 pLevel->regFilter = ++pParse->nMem;
157530 sqlite3VdbeAddOp2(v, OP_Blob, 10000, pLevel->regFilter);
157534 pTabItem = &pWC->pWInfo->pTabList->a[pLevel->iFrom];
157543 addrTop = sqlite3VdbeAddOp1(v, OP_Rewind, pLevel->iTabCur); VdbeCoverage(v);
157552 pParse, pIdx, pLevel->iTabCur, regRecord, 0, 0, 0, 0
157554 if( pLevel->regFilter ){
157555 sqlite3VdbeAddOp4Int(v, OP_FilterAdd, pLevel->regFilter, 0,
157558 sqlite3VdbeAddOp2(v, OP_IdxInsert, pLevel->iIdxCur, regRecord);
157564 assert( pLevel->iIdxCur>0 );
157565 translateColumnToCopy(pParse, addrTop, pLevel->iTabCur,
157566 pTabItem->regResult, pLevel->iIdxCur);
157570 sqlite3VdbeAddOp2(v, OP_Next, pLevel->iTabCur, addrTop+1); VdbeCoverage(v);
157586 ** for pLevel.
157588 ** If there are inner loops within pLevel that have the WHERE_BLOOMFILTER
157606 int iLevel, /* Index in pWInfo->a[] that is pLevel */
157607 WhereLevel *pLevel, /* Make a Bloom filter for this FROM term */
157617 WhereLoop *pLoop = pLevel->pWLoop; /* The loop being coded */
157629 sqlite3WhereExplainBloomFilter(pParse, pWInfo, pLevel);
157631 iCur = pLevel->iTabCur;
157632 pLevel->regFilter = ++pParse->nMem;
157642 pItem = &pWInfo->pTabList->a[pLevel->iFrom];
157652 sqlite3VdbeAddOp2(v, OP_Blob, (int)sz, pLevel->regFilter);
157667 sqlite3VdbeAddOp4Int(v, OP_FilterAdd, pLevel->regFilter, 0, r1, 1);
157679 sqlite3VdbeAddOp4Int(v, OP_FilterAdd, pLevel->regFilter, 0, r1, n);
157683 sqlite3VdbeAddOp2(v, OP_Next, pLevel->iTabCur, addrTop+1);
157690 pLevel = &pWInfo->a[iLevel];
157691 pTabItem = &pWInfo->pTabList->a[pLevel->iFrom];
157693 pLoop = pLevel->pWLoop;
161643 WhereLevel *pLevel = pWInfo->a + iLoop;
161644 pLevel->pWLoop = pWLoop = pFrom->aLoop[iLoop];
161645 pLevel->iFrom = pWLoop->iTab;
161646 pLevel->iTabCur = pWInfo->pTabList->a[pLevel->iFrom].iCursor;
162189 WhereLevel *pLevel; /* A single level in pWInfo->a[] */
162539 for(ii=0, pLevel=pWInfo->a; ii<nTabList; ii++, pLevel++){
162544 pTabItem = &pTabList->a[pLevel->iFrom];
162547 pLoop = pLevel->pWLoop;
162570 assert( pTabItem->iCursor==pLevel->iTabCur );
162613 iIndexCur = pLevel->iTabCur;
162634 pLevel->iIdxCur = iIndexCur;
162670 && (pLevel->pRJ = sqlite3WhereMalloc(pWInfo, sizeof(WhereRightJoin)))!=0
162672 WhereRightJoin *pRJ = pLevel->pRJ;
162713 pLevel = &pWInfo->a[ii];
162714 wsFlags = pLevel->pWLoop->wsFlags;
162715 pSrc = &pTabList->a[pLevel->iFrom];
162729 &pTabList->a[pLevel->iFrom], notReady, pLevel);
162732 sqlite3ConstructBloomFilter(pWInfo, ii, pLevel, notReady);
162737 pParse, pTabList, pLevel, wctrlFlags
162739 pLevel->addrBody = sqlite3VdbeCurrentAddr(v);
162740 notReady = sqlite3WhereCodeOneLoopStart(pParse,v,pWInfo,ii,pLevel,notReady);
162741 pWInfo->iContinue = pLevel->addrCont;
162743 sqlite3WhereAddScanStatus(v, pTabList, pLevel, addrExplain);
162809 WhereLevel *pLevel;
162821 pLevel = &pWInfo->a[i];
162822 if( pLevel->pRJ ){
162825 WhereRightJoin *pRJ = pLevel->pRJ;
162826 sqlite3VdbeResolveLabel(v, pLevel->addrCont);
162827 pLevel->addrCont = 0;
162833 pLoop = pLevel->pWLoop;
162834 if( pLevel->op!=OP_Noop ){
162849 sqlite3VdbeAddOp3(v, OP_Column, pLevel->iIdxCur, j, r1+j);
162852 op = pLevel->op==OP_Prev ? OP_SeekLT : OP_SeekGT;
162853 addrSeek = sqlite3VdbeAddOp4Int(v, op, pLevel->iIdxCur, 0, r1, n);
162856 sqlite3VdbeAddOp2(v, OP_Goto, 1, pLevel->p2);
162860 if( pLevel->addrCont ) sqlite3VdbeResolveLabel(v, pLevel->addrCont);
162861 sqlite3VdbeAddOp3(v, pLevel->op, pLevel->p1, pLevel->p2, pLevel->p3);
162862 sqlite3VdbeChangeP5(v, pLevel->p5);
162864 VdbeCoverageIf(v, pLevel->op==OP_Next);
162865 VdbeCoverageIf(v, pLevel->op==OP_Prev);
162866 VdbeCoverageIf(v, pLevel->op==OP_VNext);
162867 if( pLevel->regBignull ){
162868 sqlite3VdbeResolveLabel(v, pLevel->addrBignull);
162869 sqlite3VdbeAddOp2(v, OP_DecrJumpZero, pLevel->regBignull, pLevel->p2-1);
162875 }else if( pLevel->addrCont ){
162876 sqlite3VdbeResolveLabel(v, pLevel->addrCont);
162878 if( (pLoop->wsFlags & WHERE_IN_ABLE)!=0 && pLevel->u.in.nIn>0 ){
162881 sqlite3VdbeResolveLabel(v, pLevel->addrNxt);
162882 for(j=pLevel->u.in.nIn, pIn=&pLevel->u.in.aInLoop[j-1]; j>0; j--, pIn--){
162891 if( pLevel->iLeftJoin ){
162905 sqlite3VdbeAddOp4Int(v, OP_IfNoHope, pLevel->iIdxCur,
162924 sqlite3VdbeResolveLabel(v, pLevel->addrBrk);
162925 if( pLevel->pRJ ){
162926 sqlite3VdbeAddOp3(v, OP_Return, pLevel->pRJ->regReturn, 0, 1);
162929 if( pLevel->addrSkip ){
162930 sqlite3VdbeGoto(v, pLevel->addrSkip);
162932 sqlite3VdbeJumpHere(v, pLevel->addrSkip);
162933 sqlite3VdbeJumpHere(v, pLevel->addrSkip-2);
162936 if( pLevel->addrLikeRep ){
162937 sqlite3VdbeAddOp2(v, OP_DecrJumpZero, (int)(pLevel->iLikeRepCntr>>1),
162938 pLevel->addrLikeRep);
162942 if( pLevel->iLeftJoin ){
162944 addr = sqlite3VdbeAddOp1(v, OP_IfPos, pLevel->iLeftJoin); VdbeCoverage(v);
162947 assert( pLevel->iTabCur==pTabList->a[pLevel->iFrom].iCursor );
162948 sqlite3VdbeAddOp1(v, OP_NullRow, pLevel->iTabCur);
162951 || ((ws & WHERE_MULTI_OR) && pLevel->u.pCoveringIdx)
162954 Index *pIx = pLevel->u.pCoveringIdx;
162956 sqlite3VdbeAddOp3(v, OP_ReopenIdx, pLevel->iIdxCur, pIx->tnum, iDb);
162959 sqlite3VdbeAddOp1(v, OP_NullRow, pLevel->iIdxCur);
162961 if( pLevel->op==OP_Return ){
162962 sqlite3VdbeAddOp2(v, OP_Gosub, pLevel->p1, pLevel->addrFirst);
162964 sqlite3VdbeGoto(v, pLevel->addrFirst);
162969 pWInfo->pTabList->a[pLevel->iFrom].pTab->zName));
162973 for(i=0, pLevel=pWInfo->a; i<pWInfo->nLevel; i++, pLevel++){
162977 SrcItem *pTabItem = &pTabList->a[pLevel->iFrom];
162980 pLoop = pLevel->pWLoop;
162986 if( pLevel->pRJ ){
162987 sqlite3WhereRightJoinLoop(pWInfo, i, pLevel);
162997 translateColumnToCopy(pParse, pLevel->addrBody, pLevel->iTabCur,
163016 pIdx = pLevel->u.pCoveringIdx;
163029 if( p->iIdxCur==pLevel->iIdxCur ){
163036 k = pLevel->addrBody + 1;
163043 assert( pOp->opcode!=OP_Column || pOp->p1!=pLevel->iTabCur );
163044 assert( pOp->opcode!=OP_Rowid || pOp->p1!=pLevel->iTabCur );
163045 assert( pOp->opcode!=OP_IfNullRow || pOp->p1!=pLevel->iTabCur );
163051 if( pOp->p1!=pLevel->iTabCur ){
163076 pOp->p1 = pLevel->iIdxCur;
163095 pOp->p1 = pLevel->iIdxCur;
163099 pOp->p1 = pLevel->iIdxCur;