Lines Matching refs:pLoop

113663     Index *pLoop;
113664 for(pLoop=pTab->pIndex, n=1; pLoop; pLoop=pLoop->pNext, n++){}
131687 Select *pLoop; /* For looping through SELECT statements */
131705 for(pLoop=p; pLoop; pLoop=pLoop->pPrior){
131707 int addr = pLoop->addrOpenEphm[i];
131711 assert( pLoop->addrOpenEphm[1]<0 );
131717 pLoop->addrOpenEphm[i] = -1;
140821 static void explainIndexRange(StrAccum *pStr, WhereLoop *pLoop){
140822 Index *pIndex = pLoop->u.btree.pIndex;
140823 u16 nEq = pLoop->u.btree.nEq;
140824 u16 nSkip = pLoop->nSkip;
140827 if( nEq==0 && (pLoop->wsFlags&(WHERE_BTM_LIMIT|WHERE_TOP_LIMIT))==0 ) return;
140836 if( pLoop->wsFlags&WHERE_BTM_LIMIT ){
140837 explainAppendTerm(pStr, pIndex, pLoop->u.btree.nBtm, j, i, ">");
140840 if( pLoop->wsFlags&WHERE_TOP_LIMIT ){
140841 explainAppendTerm(pStr, pIndex, pLoop->u.btree.nTop, j, i, "<");
140870 WhereLoop *pLoop; /* The controlling WhereLoop object */
140876 pLoop = pLevel->pWLoop;
140877 flags = pLoop->wsFlags;
140881 || ((flags&WHERE_VIRTUALTABLE)==0 && (pLoop->u.btree.nEq>0))
140899 assert( pLoop->u.btree.pIndex!=0 );
140900 pIdx = pLoop->u.btree.pIndex;
140918 explainIndexRange(&str, pLoop);
140938 pLoop->u.vtab.idxNum, pLoop->u.vtab.idxStr);
140942 if( pLoop->nOut>=10 ){
140944 sqlite3LogEstToInt(pLoop->nOut));
140975 WhereLoop *pLoop = pLvl->pWLoop;
140976 if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)==0 && pLoop->u.btree.pIndex!=0 ){
140977 zObj = pLoop->u.btree.pIndex->zName;
140982 v, addrExplain, pLvl->addrBody, pLvl->addrVisit, pLoop->nOut, zObj
141148 WhereLoop *pLoop, /* The current loop */
141162 for(i=iEq; i<pLoop->nLTerm; i++){
141163 if( pLoop->aLTerm[i]->pExpr==pX ){
141164 int iField = pLoop->aLTerm[i]->iField - 1;
141251 WhereLoop *pLoop = pLevel->pWLoop;
141256 if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)==0
141257 && pLoop->u.btree.pIndex!=0
141258 && pLoop->u.btree.pIndex->aSortOrder[iEq]
141268 if( pLoop->aLTerm[i] && pLoop->aLTerm[i]->pExpr==pX ){
141273 for(i=iEq;i<pLoop->nLTerm; i++){
141274 assert( pLoop->aLTerm[i]!=0 );
141275 if( pLoop->aLTerm[i]->pExpr==pX ) nEq++;
141283 pX = removeUnindexableInClauseTerms(pParse, iEq, pLoop, pX);
141301 assert( (pLoop->wsFlags & WHERE_MULTI_OR)==0 );
141303 pLoop->wsFlags |= WHERE_IN_ABLE;
141317 for(i=iEq;i<pLoop->nLTerm; i++){
141318 if( pLoop->aLTerm[i]->pExpr==pX ){
141333 pLoop->wsFlags |= WHERE_IN_EARLYOUT;
141410 WhereLoop *pLoop; /* The WhereLoop object */
141417 pLoop = pLevel->pWLoop;
141418 assert( (pLoop->wsFlags & WHERE_VIRTUALTABLE)==0 );
141419 nEq = pLoop->u.btree.nEq;
141420 nSkip = pLoop->nSkip;
141421 pIdx = pLoop->u.btree.pIndex;
141427 nReg = pLoop->u.btree.nEq + nExtraReg;
141457 pTerm = pLoop->aLTerm[j];
141658 WhereLoop *pLoop = pLevel->pWLoop;
141671 sHint.pIdx = pLoop->u.btree.pIndex;
141720 if( pLoop->u.btree.nEq==0 && pTerm!=pEndRange ){
141721 for(j=0; j<pLoop->nLTerm && pLoop->aLTerm[j]!=pTerm; j++){}
141722 if( j<pLoop->nLTerm ) continue;
142020 WhereLoop *pLoop; /* The WhereLoop object being coded */
142035 pLoop = pLevel->pWLoop;
142045 sqlite3WhereLoopPrint(pLoop, pWC);
142099 if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)!=0 ){
142105 int nConstraint = pLoop->nLTerm;
142112 pTerm = pLoop->aLTerm[j];
142122 sqlite3VdbeAddOp2(v, OP_Integer, pLoop->u.vtab.idxNum, iReg);
142125 pLoop->u.vtab.idxStr,
142126 pLoop->u.vtab.needFree ? P4_DYNAMIC : P4_STATIC);
142128 pLoop->u.vtab.needFree = 0;
142134 pTerm = pLoop->aLTerm[j];
142136 if( j<16 && (pLoop->u.vtab.omitMask>>j)&1 ){
142189 if( (pLoop->wsFlags & WHERE_IPK)!=0
142190 && (pLoop->wsFlags & (WHERE_COLUMN_IN|WHERE_COLUMN_EQ))!=0
142197 assert( pLoop->u.btree.nEq==1 );
142198 pTerm = pLoop->aLTerm[0];
142212 }else if( (pLoop->wsFlags & WHERE_IPK)!=0
142213 && (pLoop->wsFlags & WHERE_COLUMN_RANGE)!=0
142224 if( pLoop->wsFlags & WHERE_BTM_LIMIT ) pStart = pLoop->aLTerm[j++];
142225 if( pLoop->wsFlags & WHERE_TOP_LIMIT ) pEnd = pLoop->aLTerm[j++];
142320 }else if( pLoop->wsFlags & WHERE_INDEXED ){
142368 u16 nEq = pLoop->u.btree.nEq; /* Number of == or IN terms */
142369 u16 nBtm = pLoop->u.btree.nBtm; /* Length of BTM vector */
142370 u16 nTop = pLoop->u.btree.nTop; /* Length of TOP vector */
142388 pIdx = pLoop->u.btree.pIndex;
142390 assert( nEq>=pLoop->nSkip );
142396 if( pLoop->wsFlags & WHERE_BTM_LIMIT ){
142397 pRangeStart = pLoop->aLTerm[j++];
142398 nExtraReg = MAX(nExtraReg, pLoop->u.btree.nBtm);
142401 (pLoop->wsFlags & WHERE_TOP_LIMIT)!=0 );
142403 if( pLoop->wsFlags & WHERE_TOP_LIMIT ){
142404 pRangeEnd = pLoop->aLTerm[j++];
142405 nExtraReg = MAX(nExtraReg, pLoop->u.btree.nTop);
142439 if( (pLoop->wsFlags & (WHERE_TOP_LIMIT|WHERE_BTM_LIMIT))==0
142440 && (pLoop->wsFlags & WHERE_BIGNULL_SORT)!=0
142444 testcase( pLoop->nSkip>0 );
142520 if( pLoop->nSkip>0 && nConstraint==pLoop->nSkip ){
142525 if( pLoop->wsFlags & WHERE_IN_EARLYOUT ){
142636 if( pLoop->wsFlags & WHERE_IN_EARLYOUT ){
142641 omitTable = (pLoop->wsFlags & WHERE_IDX_ONLY)!=0
142648 && (pWInfo->eOnePass==ONEPASS_SINGLE || pLoop->nLTerm==0) )
142709 if( pLoop->wsFlags & WHERE_ONEROW ){
142717 pLevel->p3 = (pLoop->wsFlags&WHERE_UNQ_WANTED)!=0 ? 1:0;
142718 if( (pLoop->wsFlags & WHERE_CONSTRAINT)==0 ){
142727 if( pLoop->wsFlags & WHERE_MULTI_OR ){
142787 pTerm = pLoop->aLTerm[0];
145536 WhereLoop *pLoop; /* The Loop object */
145558 pLoop = pLevel->pWLoop;
145564 || pLoop->prereq!=0 ); /* table of a LEFT JOIN */
145565 if( pLoop->prereq==0
145584 if( whereLoopResize(pParse->db, pLoop, nKeyCol+1) ){
145587 pLoop->aLTerm[nKeyCol++] = pTerm;
145593 pLoop->u.btree.nEq = pLoop->nLTerm = nKeyCol;
145594 pLoop->wsFlags = WHERE_COLUMN_EQ | WHERE_IDX_ONLY | WHERE_INDEXED
145619 pLoop->u.btree.pIndex = pIdx;
145641 assert( (u32)n==pLoop->u.btree.nEq );
145685 pLoop->wsFlags |= WHERE_PARTIALIDX;
146175 WhereLoop *pLoop, /* Update the .nOut value of this loop */
146178 Index *p = pLoop->u.btree.pIndex;
146179 int nEq = pLoop->u.btree.nEq;
146225 pLoop->nOut -= nAdjust;
146228 nLower, nUpper, nAdjust*-1, pLoop->nOut));
146288 WhereLoop *pLoop /* Modify the .nOut and maybe .rRun fields */
146291 int nOut = pLoop->nOut;
146295 Index *p = pLoop->u.btree.pIndex;
146296 int nEq = pLoop->u.btree.nEq;
146304 int nBtm = pLoop->u.btree.nBtm;
146305 int nTop = pLoop->u.btree.nTop;
146410 rc = whereRangeSkipScanEst(pParse, pLower, pUpper, pLoop, &bDone);
146437 if( pLoop->nOut>nOut ){
146439 pLoop->nOut, nOut));
146442 pLoop->nOut = (LogEst)nOut;
147095 WhereLoop *pLoop, /* The loop to adjust downward */
147099 Bitmask notAllowed = ~(pLoop->prereq|pLoop->maskSelf);
147103 assert( (pLoop->wsFlags & WHERE_AUTO_INDEX)==0 );
147107 if( (pTerm->prereqAll & pLoop->maskSelf)==0 ) continue;
147109 for(j=pLoop->nLTerm-1; j>=0; j--){
147110 pX = pLoop->aLTerm[j];
147119 pLoop->nOut += pTerm->truthProb;
147123 pLoop->nOut--;
147143 if( pLoop->nOut > nRow-iReduce ) pLoop->nOut = nRow - iReduce;
148520 WhereLoop *pLoop = 0; /* Current WhereLoop being processed. */
148566 if( iLoop>0 ) ready |= pLoop->maskSelf;
148568 pLoop = pPath->aLoop[iLoop];
148571 pLoop = pLast;
148573 if( pLoop->wsFlags & WHERE_VIRTUALTABLE ){
148574 if( pLoop->u.vtab.isOrdered && (wctrlFlags & WHERE_DISTINCTBY)==0 ){
148579 pLoop->u.btree.nDistinctCol = 0;
148581 iCur = pWInfo->pTabList->a[pLoop->iTab].iCursor;
148601 for(j=0; j<pLoop->nLTerm && pTerm!=pLoop->aLTerm[j]; j++){}
148602 if( j>=pLoop->nLTerm ) continue;
148617 if( (pLoop->wsFlags & WHERE_ONEROW)==0 ){
148618 if( pLoop->wsFlags & WHERE_IPK ){
148622 }else if( (pIndex = pLoop->u.btree.pIndex)==0 || pIndex->bUnordered ){
148631 && (pLoop->wsFlags & WHERE_SKIPSCAN)==0;
148642 assert( j>=pLoop->u.btree.nEq
148643 || (pLoop->aLTerm[j]==0)==(j<pLoop->nSkip)
148645 if( j<pLoop->u.btree.nEq && j>=pLoop->nSkip ){
148646 u16 eOp = pLoop->aLTerm[j]->eOperator;
148673 Expr *pX = pLoop->aLTerm[j]->pExpr;
148674 for(i=j+1; i<pLoop->u.btree.nEq; i++){
148675 if( pLoop->aLTerm[i]->pExpr==pX ){
148676 assert( (pLoop->aLTerm[i]->eOperator & WO_IN) );
148701 && j>=pLoop->u.btree.nEq
148732 pLoop->u.btree.nDistinctCol = j+1;
148751 if( j==pLoop->u.btree.nEq ){
148752 pLoop->wsFlags |= WHERE_BIGNULL_SORT;
148780 orderDistinctMask |= pLoop->maskSelf;
149289 WhereLoop *pLoop;
149304 pLoop = pBuilder->pNew;
149305 pLoop->wsFlags = 0;
149306 pLoop->nSkip = 0;
149310 pLoop->wsFlags = WHERE_COLUMN_EQ|WHERE_IPK|WHERE_ONEROW;
149311 pLoop->aLTerm[0] = pTerm;
149312 pLoop->nLTerm = 1;
149313 pLoop->u.btree.nEq = 1;
149315 pLoop->rRun = 33; /* 33==sqlite3LogEst(10) */
149319 assert( pLoop->aLTermSpace==pLoop->aLTerm );
149322 || pIdx->nKeyCol>ArraySize(pLoop->aLTermSpace)
149329 pLoop->aLTerm[j] = pTerm;
149332 pLoop->wsFlags = WHERE_COLUMN_EQ|WHERE_ONEROW|WHERE_INDEXED;
149334 pLoop->wsFlags |= WHERE_IDX_ONLY;
149336 pLoop->nLTerm = j;
149337 pLoop->u.btree.nEq = j;
149338 pLoop->u.btree.pIndex = pIdx;
149340 pLoop->rRun = 39; /* 39==sqlite3LogEst(15) */
149344 if( pLoop->wsFlags ){
149345 pLoop->nOut = (LogEst)1;
149346 pWInfo->a[0].pWLoop = pLoop;
149348 pLoop->maskSelf = 1; /* sqlite3WhereGetMask(&pWInfo->sMaskSet, iCur); */
149356 pLoop->cId = '0';
149517 WhereLoop *pLoop; /* Pointer to a single WhereLoop object */
149817 pLoop = pWInfo->a[i].pWLoop;
149818 pItem = &pWInfo->pTabList->a[pLoop->iTab];
149821 && (pLoop->wsFlags & WHERE_ONEROW)==0
149825 if( (tabUsed & pLoop->maskSelf)!=0 ) continue;
149828 if( (pTerm->prereqAll & pLoop->maskSelf)!=0 ){
149837 WHERETRACE(0xffff, ("-> drop loop %c not used\n", pLoop->cId));
149838 notReady &= ~pLoop->maskSelf;
149840 if( (pTerm->prereqAll & pLoop->maskSelf)!=0 ){
149911 pLoop = pLevel->pWLoop;
149916 if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)!=0 ){
149924 if( (pLoop->wsFlags & WHERE_IDX_ONLY)==0
149949 if( pLoop->u.btree.pIndex!=0 ){
149963 if( pLoop->wsFlags & WHERE_INDEXED ){
149964 Index *pIx = pLoop->u.btree.pIndex;
149998 if( (pLoop->wsFlags & WHERE_CONSTRAINT)!=0
149999 && (pLoop->wsFlags & (WHERE_COLUMN_RANGE|WHERE_SKIPSCAN))==0
150000 && (pLoop->wsFlags & WHERE_BIGNULL_SORT)==0
150098 WhereLoop *pLoop;
150108 pLoop = pLevel->pWLoop;
150116 && (pLoop->wsFlags & WHERE_INDEXED)!=0
150117 && (pIdx = pLoop->u.btree.pIndex)->hasStat1
150118 && (n = pLoop->u.btree.nDistinctCol)>0
150153 if( pLoop->wsFlags & WHERE_IN_ABLE && pLevel->u.in.nIn>0 ){
150161 assert( pLoop->wsFlags & WHERE_IN_EARLYOUT );
150173 ((pLoop->wsFlags & WHERE_VIRTUALTABLE)==0)
150177 if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)==0 ){
150195 VdbeComment((v, "next skip-scan on %s", pLoop->u.btree.pIndex->zName));
150207 int ws = pLoop->wsFlags;
150243 pLoop = pLevel->pWLoop;
150266 int ws = pLoop->wsFlags;
150290 if( pLoop->wsFlags & (WHERE_INDEXED|WHERE_IDX_ONLY) ){
150291 pIdx = pLoop->u.btree.pIndex;
150292 }else if( pLoop->wsFlags & WHERE_MULTI_OR ){
150330 assert( (pLoop->wsFlags & WHERE_IDX_ONLY)==0 || x>=0
153500 Select *pNext = 0, *pLoop;
153502 for(pLoop=p; pLoop; pNext=pLoop, pLoop=pLoop->pPrior, cnt++){
153503 pLoop->pNext = pNext;
153504 pLoop->selFlags |= SF_Compound;