pLoop 93785 ext/sqlite3/libsqlite/sqlite3.c Index *pLoop; pLoop 93786 ext/sqlite3/libsqlite/sqlite3.c for(pLoop=pTab->pIndex, n=1; pLoop; pLoop=pLoop->pNext, n++){} pLoop 108949 ext/sqlite3/libsqlite/sqlite3.c Select *pLoop; /* For looping through SELECT statements */ pLoop 108967 ext/sqlite3/libsqlite/sqlite3.c for(pLoop=p; pLoop; pLoop=pLoop->pPrior){ pLoop 108969 ext/sqlite3/libsqlite/sqlite3.c int addr = pLoop->addrOpenEphm[i]; pLoop 108973 ext/sqlite3/libsqlite/sqlite3.c assert( pLoop->addrOpenEphm[1]<0 ); pLoop 108979 ext/sqlite3/libsqlite/sqlite3.c pLoop->addrOpenEphm[i] = -1; pLoop 117888 ext/sqlite3/libsqlite/sqlite3.c WhereLoop *pLoop; /* The Loop object */ pLoop 117907 ext/sqlite3/libsqlite/sqlite3.c pLoop = pLevel->pWLoop; pLoop 117913 ext/sqlite3/libsqlite/sqlite3.c || pLoop->prereq!=0 ); /* table of a LEFT JOIN */ pLoop 117914 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->prereq==0 pLoop 117933 ext/sqlite3/libsqlite/sqlite3.c if( whereLoopResize(pParse->db, pLoop, nKeyCol+1) ){ pLoop 117936 ext/sqlite3/libsqlite/sqlite3.c pLoop->aLTerm[nKeyCol++] = pTerm; pLoop 117942 ext/sqlite3/libsqlite/sqlite3.c pLoop->u.btree.nEq = pLoop->nLTerm = nKeyCol; pLoop 117943 ext/sqlite3/libsqlite/sqlite3.c pLoop->wsFlags = WHERE_COLUMN_EQ | WHERE_IDX_ONLY | WHERE_INDEXED pLoop 117968 ext/sqlite3/libsqlite/sqlite3.c pLoop->u.btree.pIndex = pIdx; pLoop 117989 ext/sqlite3/libsqlite/sqlite3.c assert( (u32)n==pLoop->u.btree.nEq ); pLoop 118024 ext/sqlite3/libsqlite/sqlite3.c pLoop->wsFlags |= WHERE_PARTIALIDX; pLoop 118459 ext/sqlite3/libsqlite/sqlite3.c WhereLoop *pLoop, /* Update the .nOut value of this loop */ pLoop 118462 ext/sqlite3/libsqlite/sqlite3.c Index *p = pLoop->u.btree.pIndex; pLoop 118463 ext/sqlite3/libsqlite/sqlite3.c int nEq = pLoop->u.btree.nEq; pLoop 118510 ext/sqlite3/libsqlite/sqlite3.c pLoop->nOut -= nAdjust; pLoop 118513 ext/sqlite3/libsqlite/sqlite3.c nLower, nUpper, nAdjust*-1, pLoop->nOut)); pLoop 118573 ext/sqlite3/libsqlite/sqlite3.c WhereLoop *pLoop /* Modify the .nOut and maybe .rRun fields */ pLoop 118576 ext/sqlite3/libsqlite/sqlite3.c int nOut = pLoop->nOut; pLoop 118580 ext/sqlite3/libsqlite/sqlite3.c Index *p = pLoop->u.btree.pIndex; pLoop 118581 ext/sqlite3/libsqlite/sqlite3.c int nEq = pLoop->u.btree.nEq; pLoop 118692 ext/sqlite3/libsqlite/sqlite3.c rc = whereRangeSkipScanEst(pParse, pLower, pUpper, pLoop, &bDone); pLoop 118719 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->nOut>nOut ){ pLoop 118721 ext/sqlite3/libsqlite/sqlite3.c pLoop->nOut, nOut)); pLoop 118724 ext/sqlite3/libsqlite/sqlite3.c pLoop->nOut = (LogEst)nOut; pLoop 118979 ext/sqlite3/libsqlite/sqlite3.c WhereLoop *pLoop = pLevel->pWLoop; pLoop 118981 ext/sqlite3/libsqlite/sqlite3.c if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)==0 pLoop 118982 ext/sqlite3/libsqlite/sqlite3.c && pLoop->u.btree.pIndex!=0 pLoop 118983 ext/sqlite3/libsqlite/sqlite3.c && pLoop->u.btree.pIndex->aSortOrder[iEq] pLoop 119000 ext/sqlite3/libsqlite/sqlite3.c assert( (pLoop->wsFlags & WHERE_MULTI_OR)==0 ); pLoop 119001 ext/sqlite3/libsqlite/sqlite3.c pLoop->wsFlags |= WHERE_IN_ABLE; pLoop 119086 ext/sqlite3/libsqlite/sqlite3.c WhereLoop *pLoop; /* The WhereLoop object */ pLoop 119093 ext/sqlite3/libsqlite/sqlite3.c pLoop = pLevel->pWLoop; pLoop 119094 ext/sqlite3/libsqlite/sqlite3.c assert( (pLoop->wsFlags & WHERE_VIRTUALTABLE)==0 ); pLoop 119095 ext/sqlite3/libsqlite/sqlite3.c nEq = pLoop->u.btree.nEq; pLoop 119096 ext/sqlite3/libsqlite/sqlite3.c nSkip = pLoop->nSkip; pLoop 119097 ext/sqlite3/libsqlite/sqlite3.c pIdx = pLoop->u.btree.pIndex; pLoop 119103 ext/sqlite3/libsqlite/sqlite3.c nReg = pLoop->u.btree.nEq + nExtraReg; pLoop 119135 ext/sqlite3/libsqlite/sqlite3.c pTerm = pLoop->aLTerm[j]; pLoop 119207 ext/sqlite3/libsqlite/sqlite3.c static void explainIndexRange(StrAccum *pStr, WhereLoop *pLoop, Table *pTab){ pLoop 119208 ext/sqlite3/libsqlite/sqlite3.c Index *pIndex = pLoop->u.btree.pIndex; pLoop 119209 ext/sqlite3/libsqlite/sqlite3.c u16 nEq = pLoop->u.btree.nEq; pLoop 119210 ext/sqlite3/libsqlite/sqlite3.c u16 nSkip = pLoop->nSkip; pLoop 119215 ext/sqlite3/libsqlite/sqlite3.c if( nEq==0 && (pLoop->wsFlags&(WHERE_BTM_LIMIT|WHERE_TOP_LIMIT))==0 ) return; pLoop 119228 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->wsFlags&WHERE_BTM_LIMIT ){ pLoop 119232 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->wsFlags&WHERE_TOP_LIMIT ){ pLoop 119266 ext/sqlite3/libsqlite/sqlite3.c WhereLoop *pLoop; /* The controlling WhereLoop object */ pLoop 119272 ext/sqlite3/libsqlite/sqlite3.c pLoop = pLevel->pWLoop; pLoop 119273 ext/sqlite3/libsqlite/sqlite3.c flags = pLoop->wsFlags; pLoop 119277 ext/sqlite3/libsqlite/sqlite3.c || ((flags&WHERE_VIRTUALTABLE)==0 && (pLoop->u.btree.nEq>0)) pLoop 119295 ext/sqlite3/libsqlite/sqlite3.c assert( pLoop->u.btree.pIndex!=0 ); pLoop 119296 ext/sqlite3/libsqlite/sqlite3.c pIdx = pLoop->u.btree.pIndex; pLoop 119314 ext/sqlite3/libsqlite/sqlite3.c explainIndexRange(&str, pLoop, pItem->pTab); pLoop 119334 ext/sqlite3/libsqlite/sqlite3.c pLoop->u.vtab.idxNum, pLoop->u.vtab.idxStr); pLoop 119338 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->nOut>=10 ){ pLoop 119339 ext/sqlite3/libsqlite/sqlite3.c sqlite3XPrintf(&str, 0, " (~%llu rows)", sqlite3LogEstToInt(pLoop->nOut)); pLoop 119370 ext/sqlite3/libsqlite/sqlite3.c WhereLoop *pLoop = pLvl->pWLoop; pLoop 119371 ext/sqlite3/libsqlite/sqlite3.c if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)==0 && pLoop->u.btree.pIndex!=0 ){ pLoop 119372 ext/sqlite3/libsqlite/sqlite3.c zObj = pLoop->u.btree.pIndex->zName; pLoop 119377 ext/sqlite3/libsqlite/sqlite3.c v, addrExplain, pLvl->addrBody, pLvl->addrVisit, pLoop->nOut, zObj pLoop 119428 ext/sqlite3/libsqlite/sqlite3.c WhereLoop *pLoop; /* The WhereLoop object being coded */ pLoop 119445 ext/sqlite3/libsqlite/sqlite3.c pLoop = pLevel->pWLoop; pLoop 119450 ext/sqlite3/libsqlite/sqlite3.c omitTable = (pLoop->wsFlags & WHERE_IDX_ONLY)!=0 pLoop 119488 ext/sqlite3/libsqlite/sqlite3.c if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)!=0 ){ pLoop 119494 ext/sqlite3/libsqlite/sqlite3.c int nConstraint = pLoop->nLTerm; pLoop 119501 ext/sqlite3/libsqlite/sqlite3.c pTerm = pLoop->aLTerm[j]; pLoop 119510 ext/sqlite3/libsqlite/sqlite3.c sqlite3VdbeAddOp2(v, OP_Integer, pLoop->u.vtab.idxNum, iReg); pLoop 119513 ext/sqlite3/libsqlite/sqlite3.c pLoop->u.vtab.idxStr, pLoop 119514 ext/sqlite3/libsqlite/sqlite3.c pLoop->u.vtab.needFree ? P4_MPRINTF : P4_STATIC); pLoop 119516 ext/sqlite3/libsqlite/sqlite3.c pLoop->u.vtab.needFree = 0; pLoop 119518 ext/sqlite3/libsqlite/sqlite3.c if( (pLoop->u.vtab.omitMask>>j)&1 ){ pLoop 119519 ext/sqlite3/libsqlite/sqlite3.c disableTerm(pLevel, pLoop->aLTerm[j]); pLoop 119530 ext/sqlite3/libsqlite/sqlite3.c if( (pLoop->wsFlags & WHERE_IPK)!=0 pLoop 119531 ext/sqlite3/libsqlite/sqlite3.c && (pLoop->wsFlags & (WHERE_COLUMN_IN|WHERE_COLUMN_EQ))!=0 pLoop 119538 ext/sqlite3/libsqlite/sqlite3.c assert( pLoop->u.btree.nEq==1 ); pLoop 119539 ext/sqlite3/libsqlite/sqlite3.c pTerm = pLoop->aLTerm[0]; pLoop 119555 ext/sqlite3/libsqlite/sqlite3.c }else if( (pLoop->wsFlags & WHERE_IPK)!=0 pLoop 119556 ext/sqlite3/libsqlite/sqlite3.c && (pLoop->wsFlags & WHERE_COLUMN_RANGE)!=0 pLoop 119568 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->wsFlags & WHERE_BTM_LIMIT ) pStart = pLoop->aLTerm[j++]; pLoop 119569 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->wsFlags & WHERE_TOP_LIMIT ) pEnd = pLoop->aLTerm[j++]; pLoop 119645 ext/sqlite3/libsqlite/sqlite3.c }else if( pLoop->wsFlags & WHERE_INDEXED ){ pLoop 119693 ext/sqlite3/libsqlite/sqlite3.c u16 nEq = pLoop->u.btree.nEq; /* Number of == or IN terms */ pLoop 119710 ext/sqlite3/libsqlite/sqlite3.c pIdx = pLoop->u.btree.pIndex; pLoop 119712 ext/sqlite3/libsqlite/sqlite3.c assert( nEq>=pLoop->nSkip ); pLoop 119729 ext/sqlite3/libsqlite/sqlite3.c assert( pLoop->nSkip==0 ); pLoop 119738 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->wsFlags & WHERE_BTM_LIMIT ){ pLoop 119739 ext/sqlite3/libsqlite/sqlite3.c pRangeStart = pLoop->aLTerm[j++]; pLoop 119743 ext/sqlite3/libsqlite/sqlite3.c (pLoop->wsFlags & WHERE_TOP_LIMIT)!=0 ); pLoop 119745 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->wsFlags & WHERE_TOP_LIMIT ){ pLoop 119746 ext/sqlite3/libsqlite/sqlite3.c pRangeEnd = pLoop->aLTerm[j++]; pLoop 119906 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->wsFlags & WHERE_ONEROW ){ pLoop 119914 ext/sqlite3/libsqlite/sqlite3.c pLevel->p3 = (pLoop->wsFlags&WHERE_UNQ_WANTED)!=0 ? 1:0; pLoop 119915 ext/sqlite3/libsqlite/sqlite3.c if( (pLoop->wsFlags & WHERE_CONSTRAINT)==0 ){ pLoop 119923 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->wsFlags & WHERE_MULTI_OR ){ pLoop 119983 ext/sqlite3/libsqlite/sqlite3.c pTerm = pLoop->aLTerm[0]; pLoop 120799 ext/sqlite3/libsqlite/sqlite3.c WhereLoop *pLoop, /* The loop to adjust downward */ pLoop 120803 ext/sqlite3/libsqlite/sqlite3.c Bitmask notAllowed = ~(pLoop->prereq|pLoop->maskSelf); pLoop 120807 ext/sqlite3/libsqlite/sqlite3.c assert( (pLoop->wsFlags & WHERE_AUTO_INDEX)==0 ); pLoop 120810 ext/sqlite3/libsqlite/sqlite3.c if( (pTerm->prereqAll & pLoop->maskSelf)==0 ) continue; pLoop 120812 ext/sqlite3/libsqlite/sqlite3.c for(j=pLoop->nLTerm-1; j>=0; j--){ pLoop 120813 ext/sqlite3/libsqlite/sqlite3.c pX = pLoop->aLTerm[j]; pLoop 120822 ext/sqlite3/libsqlite/sqlite3.c pLoop->nOut += pTerm->truthProb; pLoop 120826 ext/sqlite3/libsqlite/sqlite3.c pLoop->nOut--; pLoop 120839 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->nOut > nRow-iReduce ) pLoop->nOut = nRow - iReduce; pLoop 121804 ext/sqlite3/libsqlite/sqlite3.c WhereLoop *pLoop = 0; /* Current WhereLoop being processed. */ pLoop 121848 ext/sqlite3/libsqlite/sqlite3.c if( iLoop>0 ) ready |= pLoop->maskSelf; pLoop 121849 ext/sqlite3/libsqlite/sqlite3.c pLoop = iLoop<nLoop ? pPath->aLoop[iLoop] : pLast; pLoop 121850 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->wsFlags & WHERE_VIRTUALTABLE ){ pLoop 121851 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->u.vtab.isOrdered ) obSat = obDone; pLoop 121854 ext/sqlite3/libsqlite/sqlite3.c iCur = pWInfo->pTabList->a[pLoop->iTab].iCursor; pLoop 121882 ext/sqlite3/libsqlite/sqlite3.c if( (pLoop->wsFlags & WHERE_ONEROW)==0 ){ pLoop 121883 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->wsFlags & WHERE_IPK ){ pLoop 121887 ext/sqlite3/libsqlite/sqlite3.c }else if( (pIndex = pLoop->u.btree.pIndex)==0 || pIndex->bUnordered ){ pLoop 121906 ext/sqlite3/libsqlite/sqlite3.c if( j<pLoop->u.btree.nEq pLoop 121907 ext/sqlite3/libsqlite/sqlite3.c && pLoop->nSkip==0 pLoop 121908 ext/sqlite3/libsqlite/sqlite3.c && ((i = pLoop->aLTerm[j]->eOperator) & (WO_EQ|WO_ISNULL))!=0 pLoop 121934 ext/sqlite3/libsqlite/sqlite3.c && j>=pLoop->u.btree.nEq pLoop 121996 ext/sqlite3/libsqlite/sqlite3.c orderDistinctMask |= pLoop->maskSelf; pLoop 122463 ext/sqlite3/libsqlite/sqlite3.c WhereLoop *pLoop; pLoop 122478 ext/sqlite3/libsqlite/sqlite3.c pLoop = pBuilder->pNew; pLoop 122479 ext/sqlite3/libsqlite/sqlite3.c pLoop->wsFlags = 0; pLoop 122480 ext/sqlite3/libsqlite/sqlite3.c pLoop->nSkip = 0; pLoop 122483 ext/sqlite3/libsqlite/sqlite3.c pLoop->wsFlags = WHERE_COLUMN_EQ|WHERE_IPK|WHERE_ONEROW; pLoop 122484 ext/sqlite3/libsqlite/sqlite3.c pLoop->aLTerm[0] = pTerm; pLoop 122485 ext/sqlite3/libsqlite/sqlite3.c pLoop->nLTerm = 1; pLoop 122486 ext/sqlite3/libsqlite/sqlite3.c pLoop->u.btree.nEq = 1; pLoop 122488 ext/sqlite3/libsqlite/sqlite3.c pLoop->rRun = 33; /* 33==sqlite3LogEst(10) */ pLoop 122491 ext/sqlite3/libsqlite/sqlite3.c assert( pLoop->aLTermSpace==pLoop->aLTerm ); pLoop 122494 ext/sqlite3/libsqlite/sqlite3.c || pIdx->nKeyCol>ArraySize(pLoop->aLTermSpace) pLoop 122499 ext/sqlite3/libsqlite/sqlite3.c pLoop->aLTerm[j] = pTerm; pLoop 122502 ext/sqlite3/libsqlite/sqlite3.c pLoop->wsFlags = WHERE_COLUMN_EQ|WHERE_ONEROW|WHERE_INDEXED; pLoop 122504 ext/sqlite3/libsqlite/sqlite3.c pLoop->wsFlags |= WHERE_IDX_ONLY; pLoop 122506 ext/sqlite3/libsqlite/sqlite3.c pLoop->nLTerm = j; pLoop 122507 ext/sqlite3/libsqlite/sqlite3.c pLoop->u.btree.nEq = j; pLoop 122508 ext/sqlite3/libsqlite/sqlite3.c pLoop->u.btree.pIndex = pIdx; pLoop 122510 ext/sqlite3/libsqlite/sqlite3.c pLoop->rRun = 39; /* 39==sqlite3LogEst(15) */ pLoop 122514 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->wsFlags ){ pLoop 122515 ext/sqlite3/libsqlite/sqlite3.c pLoop->nOut = (LogEst)1; pLoop 122516 ext/sqlite3/libsqlite/sqlite3.c pWInfo->a[0].pWLoop = pLoop; pLoop 122517 ext/sqlite3/libsqlite/sqlite3.c pLoop->maskSelf = getMask(&pWInfo->sMaskSet, iCur); pLoop 122525 ext/sqlite3/libsqlite/sqlite3.c pLoop->cId = '0'; pLoop 122637 ext/sqlite3/libsqlite/sqlite3.c WhereLoop *pLoop; /* Pointer to a single WhereLoop object */ pLoop 122863 ext/sqlite3/libsqlite/sqlite3.c pLoop = pWInfo->a[pWInfo->nLevel-1].pWLoop; pLoop 122864 ext/sqlite3/libsqlite/sqlite3.c if( (pWInfo->pTabList->a[pLoop->iTab].jointype & JT_LEFT)==0 ) break; pLoop 122866 ext/sqlite3/libsqlite/sqlite3.c && (pLoop->wsFlags & WHERE_ONEROW)==0 pLoop 122870 ext/sqlite3/libsqlite/sqlite3.c if( (tabUsed & pLoop->maskSelf)!=0 ) break; pLoop 122873 ext/sqlite3/libsqlite/sqlite3.c if( (pTerm->prereqAll & pLoop->maskSelf)!=0 pLoop 122880 ext/sqlite3/libsqlite/sqlite3.c WHERETRACE(0xffff, ("-> drop loop %c not used\n", pLoop->cId)); pLoop 122914 ext/sqlite3/libsqlite/sqlite3.c pLoop = pLevel->pWLoop; pLoop 122919 ext/sqlite3/libsqlite/sqlite3.c if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)!=0 ){ pLoop 122927 ext/sqlite3/libsqlite/sqlite3.c if( (pLoop->wsFlags & WHERE_IDX_ONLY)==0 pLoop 122949 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->wsFlags & WHERE_INDEXED ){ pLoop 122950 ext/sqlite3/libsqlite/sqlite3.c Index *pIx = pLoop->u.btree.pIndex; pLoop 122984 ext/sqlite3/libsqlite/sqlite3.c if( (pLoop->wsFlags & WHERE_CONSTRAINT)!=0 pLoop 122985 ext/sqlite3/libsqlite/sqlite3.c && (pLoop->wsFlags & (WHERE_COLUMN_RANGE|WHERE_SKIPSCAN))==0 pLoop 123049 ext/sqlite3/libsqlite/sqlite3.c WhereLoop *pLoop; pLoop 123060 ext/sqlite3/libsqlite/sqlite3.c pLoop = pLevel->pWLoop; pLoop 123070 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->wsFlags & WHERE_IN_ABLE && pLevel->u.in.nIn>0 ){ pLoop 123086 ext/sqlite3/libsqlite/sqlite3.c VdbeComment((v, "next skip-scan on %s", pLoop->u.btree.pIndex->zName)); pLoop 123102 ext/sqlite3/libsqlite/sqlite3.c assert( (pLoop->wsFlags & WHERE_IDX_ONLY)==0 pLoop 123103 ext/sqlite3/libsqlite/sqlite3.c || (pLoop->wsFlags & WHERE_INDEXED)!=0 ); pLoop 123104 ext/sqlite3/libsqlite/sqlite3.c if( (pLoop->wsFlags & WHERE_IDX_ONLY)==0 ){ pLoop 123107 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->wsFlags & WHERE_INDEXED ){ pLoop 123134 ext/sqlite3/libsqlite/sqlite3.c pLoop = pLevel->pWLoop; pLoop 123169 ext/sqlite3/libsqlite/sqlite3.c int ws = pLoop->wsFlags; pLoop 123192 ext/sqlite3/libsqlite/sqlite3.c if( pLoop->wsFlags & (WHERE_INDEXED|WHERE_IDX_ONLY) ){ pLoop 123193 ext/sqlite3/libsqlite/sqlite3.c pIdx = pLoop->u.btree.pIndex; pLoop 123194 ext/sqlite3/libsqlite/sqlite3.c }else if( pLoop->wsFlags & WHERE_MULTI_OR ){ pLoop 123215 ext/sqlite3/libsqlite/sqlite3.c assert( (pLoop->wsFlags & WHERE_IDX_ONLY)==0 || x>=0 ); pLoop 123300 ext/sqlite3/libsqlite/sqlite3.c Select *pNext = 0, *pLoop; pLoop 123302 ext/sqlite3/libsqlite/sqlite3.c for(pLoop=p; pLoop; pNext=pLoop, pLoop=pLoop->pPrior, cnt++){ pLoop 123303 ext/sqlite3/libsqlite/sqlite3.c pLoop->pNext = pNext; pLoop 123304 ext/sqlite3/libsqlite/sqlite3.c pLoop->selFlags |= SF_Compound;