Lines Matching refs:pLoop

89022     Index *pLoop;
89023 for(pLoop=pTab->pIndex, n=1; pLoop; pLoop=pLoop->pNext, n++){}
103815 Select *pLoop; /* For looping through SELECT statements */
103833 for(pLoop=p; pLoop; pLoop=pLoop->pPrior){
103835 int addr = pLoop->addrOpenEphm[i];
103839 assert( pLoop->addrOpenEphm[1]<0 );
103845 pLoop->addrOpenEphm[i] = -1;
112488 WhereLoop *pLoop; /* The Loop object */
112505 pLoop = pLevel->pWLoop;
112520 if( whereLoopResize(pParse->db, pLoop, nKeyCol+1) ) return;
112521 pLoop->aLTerm[nKeyCol++] = pTerm;
112527 pLoop->u.btree.nEq = pLoop->nLTerm = nKeyCol;
112528 pLoop->wsFlags = WHERE_COLUMN_EQ | WHERE_IDX_ONLY | WHERE_INDEXED
112549 pLoop->wsFlags |= WHERE_COLUMN_EQ | WHERE_IDX_ONLY;
112554 pLoop->u.btree.pIndex = pIdx;
112575 assert( (u32)n==pLoop->u.btree.nEq );
112903 ** Value pLoop->nOut is currently set to the estimated number of rows
112914 ** N is the total number of samples, the pLoop->nOut value is adjusted
112935 WhereLoop *pLoop, /* Update the .nOut value of this loop */
112938 Index *p = pLoop->u.btree.pIndex;
112939 int nEq = pLoop->u.btree.nEq;
112986 pLoop->nOut -= nAdjust;
112989 nLower, nUpper, nAdjust*-1, pLoop->nOut));
113049 WhereLoop *pLoop /* Modify the .nOut and maybe .rRun fields */
113052 int nOut = pLoop->nOut;
113056 Index *p = pLoop->u.btree.pIndex;
113057 int nEq = pLoop->u.btree.nEq;
113145 pLoop->nOut = (LogEst)nOut;
113152 rc = whereRangeSkipScanEst(pParse, pLower, pUpper, pLoop, &bDone);
113175 pLoop->nOut = (LogEst)nOut;
113407 WhereLoop *pLoop = pLevel->pWLoop;
113409 if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)==0
113410 && pLoop->u.btree.pIndex!=0
113411 && pLoop->u.btree.pIndex->aSortOrder[iEq]
113428 assert( (pLoop->wsFlags & WHERE_MULTI_OR)==0 );
113429 pLoop->wsFlags |= WHERE_IN_ABLE;
113514 WhereLoop *pLoop; /* The WhereLoop object */
113521 pLoop = pLevel->pWLoop;
113522 assert( (pLoop->wsFlags & WHERE_VIRTUALTABLE)==0 );
113523 nEq = pLoop->u.btree.nEq;
113524 nSkip = pLoop->u.btree.nSkip;
113525 pIdx = pLoop->u.btree.pIndex;
113531 nReg = pLoop->u.btree.nEq + nExtraReg;
113563 pTerm = pLoop->aLTerm[j];
113640 static char *explainIndexRange(sqlite3 *db, WhereLoop *pLoop, Table *pTab){
113641 Index *pIndex = pLoop->u.btree.pIndex;
113642 u16 nEq = pLoop->u.btree.nEq;
113643 u16 nSkip = pLoop->u.btree.nSkip;
113649 if( nEq==0 && (pLoop->wsFlags & (WHERE_BTM_LIMIT|WHERE_TOP_LIMIT))==0 ){
113668 if( pLoop->wsFlags&WHERE_BTM_LIMIT ){
113672 if( pLoop->wsFlags&WHERE_TOP_LIMIT ){
113704 WhereLoop *pLoop; /* The controlling WhereLoop object */
113707 pLoop = pLevel->pWLoop;
113708 flags = pLoop->wsFlags;
113712 || ((flags&WHERE_VIRTUALTABLE)==0 && (pLoop->u.btree.nEq>0))
113726 && ALWAYS(pLoop->u.btree.pIndex!=0)
113729 Index *pIdx = pLoop->u.btree.pIndex;
113730 char *zWhere = explainIndexRange(db, pLoop, pItem->pTab);
113759 pLoop->u.vtab.idxNum, pLoop->u.vtab.idxStr);
113786 WhereLoop *pLoop; /* The WhereLoop object being coded */
113803 pLoop = pLevel->pWLoop;
113808 omitTable = (pLoop->wsFlags & WHERE_IDX_ONLY)!=0
113846 if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)!=0 ){
113852 int nConstraint = pLoop->nLTerm;
113859 pTerm = pLoop->aLTerm[j];
113868 sqlite3VdbeAddOp2(v, OP_Integer, pLoop->u.vtab.idxNum, iReg);
113871 pLoop->u.vtab.idxStr,
113872 pLoop->u.vtab.needFree ? P4_MPRINTF : P4_STATIC);
113874 pLoop->u.vtab.needFree = 0;
113876 if( (pLoop->u.vtab.omitMask>>j)&1 ){
113877 disableTerm(pLevel, pLoop->aLTerm[j]);
113888 if( (pLoop->wsFlags & WHERE_IPK)!=0
113889 && (pLoop->wsFlags & (WHERE_COLUMN_IN|WHERE_COLUMN_EQ))!=0
113896 assert( pLoop->u.btree.nEq==1 );
113897 pTerm = pLoop->aLTerm[0];
113913 }else if( (pLoop->wsFlags & WHERE_IPK)!=0
113914 && (pLoop->wsFlags & WHERE_COLUMN_RANGE)!=0
113926 if( pLoop->wsFlags & WHERE_BTM_LIMIT ) pStart = pLoop->aLTerm[j++];
113927 if( pLoop->wsFlags & WHERE_TOP_LIMIT ) pEnd = pLoop->aLTerm[j++];
114003 }else if( pLoop->wsFlags & WHERE_INDEXED ){
114051 u16 nEq = pLoop->u.btree.nEq; /* Number of == or IN terms */
114068 pIdx = pLoop->u.btree.pIndex;
114070 assert( nEq>=pLoop->u.btree.nSkip );
114087 assert( pLoop->u.btree.nSkip==0 );
114096 if( pLoop->wsFlags & WHERE_BTM_LIMIT ){
114097 pRangeStart = pLoop->aLTerm[j++];
114100 if( pLoop->wsFlags & WHERE_TOP_LIMIT ){
114101 pRangeEnd = pLoop->aLTerm[j++];
114247 if( pLoop->wsFlags & WHERE_ONEROW ){
114255 pLevel->p3 = (pLoop->wsFlags&WHERE_UNQ_WANTED)!=0 ? 1:0;
114256 if( (pLoop->wsFlags & WHERE_CONSTRAINT)==0 ){
114264 if( pLoop->wsFlags & WHERE_MULTI_OR ){
114324 pTerm = pLoop->aLTerm[0];
114765 ** Increase the memory allocation for pLoop->aLTerm[] to be at least n.
114781 ** Transfer content from the second pLoop into the first.
115104 static void whereLoopOutputAdjust(WhereClause *pWC, WhereLoop *pLoop){
115106 Bitmask notAllowed = ~(pLoop->prereq|pLoop->maskSelf);
115114 if( (pTerm->prereqAll & pLoop->maskSelf)==0 ) continue;
115116 for(j=pLoop->nLTerm-1; j>=0; j--){
115117 pX = pLoop->aLTerm[j];
115123 pLoop->nOut += (pTerm->truthProb<=0 ? pTerm->truthProb : -1);
116038 WhereLoop *pLoop = 0; /* Current WhereLoop being processed. */
116042 Index *pIndex; /* The index associated with pLoop */
116082 if( iLoop>0 ) ready |= pLoop->maskSelf;
116083 pLoop = iLoop<nLoop ? pPath->aLoop[iLoop] : pLast;
116084 if( pLoop->wsFlags & WHERE_VIRTUALTABLE ){
116085 if( pLoop->u.vtab.isOrdered ) obSat = obDone;
116088 iCur = pWInfo->pTabList->a[pLoop->iTab].iCursor;
116116 if( (pLoop->wsFlags & WHERE_ONEROW)==0 ){
116117 if( pLoop->wsFlags & WHERE_IPK ){
116121 }else if( (pIndex = pLoop->u.btree.pIndex)==0 || pIndex->bUnordered ){
116140 if( j<pLoop->u.btree.nEq
116141 && pLoop->u.btree.nSkip==0
116142 && ((i = pLoop->aLTerm[j]->eOperator) & (WO_EQ|WO_ISNULL))!=0
116168 && j>=pLoop->u.btree.nEq
116228 /* Mark off any other ORDER BY terms that reference pLoop */
116230 orderDistinctMask |= pLoop->maskSelf;
116694 WhereLoop *pLoop;
116709 pLoop = pBuilder->pNew;
116710 pLoop->wsFlags = 0;
116711 pLoop->u.btree.nSkip = 0;
116714 pLoop->wsFlags = WHERE_COLUMN_EQ|WHERE_IPK|WHERE_ONEROW;
116715 pLoop->aLTerm[0] = pTerm;
116716 pLoop->nLTerm = 1;
116717 pLoop->u.btree.nEq = 1;
116719 pLoop->rRun = 33; /* 33==sqlite3LogEst(10) */
116722 assert( pLoop->aLTermSpace==pLoop->aLTerm );
116723 assert( ArraySize(pLoop->aLTermSpace)==4 );
116726 || pIdx->nKeyCol>ArraySize(pLoop->aLTermSpace)
116731 pLoop->aLTerm[j] = pTerm;
116734 pLoop->wsFlags = WHERE_COLUMN_EQ|WHERE_ONEROW|WHERE_INDEXED;
116736 pLoop->wsFlags |= WHERE_IDX_ONLY;
116738 pLoop->nLTerm = j;
116739 pLoop->u.btree.nEq = j;
116740 pLoop->u.btree.pIndex = pIdx;
116742 pLoop->rRun = 39; /* 39==sqlite3LogEst(15) */
116746 if( pLoop->wsFlags ){
116747 pLoop->nOut = (LogEst)1;
116748 pWInfo->a[0].pWLoop = pLoop;
116749 pLoop->maskSelf = getMask(&pWInfo->sMaskSet, iCur);
116757 pLoop->cId = '0';
116869 WhereLoop *pLoop; /* Pointer to a single WhereLoop object */
117103 pLoop = pWInfo->a[pWInfo->nLevel-1].pWLoop;
117104 if( (pWInfo->pTabList->a[pLoop->iTab].jointype & JT_LEFT)==0 ) break;
117106 && (pLoop->wsFlags & WHERE_ONEROW)==0
117110 if( (tabUsed & pLoop->maskSelf)!=0 ) break;
117113 if( (pTerm->prereqAll & pLoop->maskSelf)!=0
117120 WHERETRACE(0xffff, ("-> drop loop %c not used\n", pLoop->cId));
117154 pLoop = pLevel->pWLoop;
117159 if( (pLoop->wsFlags & WHERE_VIRTUALTABLE)!=0 ){
117167 if( (pLoop->wsFlags & WHERE_IDX_ONLY)==0
117189 if( pLoop->wsFlags & WHERE_INDEXED ){
117190 Index *pIx = pLoop->u.btree.pIndex;
117275 WhereLoop *pLoop;
117286 pLoop = pLevel->pWLoop;
117296 if( pLoop->wsFlags & WHERE_IN_ABLE && pLevel->u.in.nIn>0 ){
117313 VdbeComment((v, "next skip-scan on %s", pLoop->u.btree.pIndex->zName));
117319 assert( (pLoop->wsFlags & WHERE_IDX_ONLY)==0
117320 || (pLoop->wsFlags & WHERE_INDEXED)!=0 );
117321 if( (pLoop->wsFlags & WHERE_IDX_ONLY)==0 ){
117324 if( pLoop->wsFlags & WHERE_INDEXED ){
117351 pLoop = pLevel->pWLoop;
117386 int ws = pLoop->wsFlags;
117409 if( pLoop->wsFlags & (WHERE_INDEXED|WHERE_IDX_ONLY) ){
117410 pIdx = pLoop->u.btree.pIndex;
117411 }else if( pLoop->wsFlags & WHERE_MULTI_OR ){
117432 assert( (pLoop->wsFlags & WHERE_IDX_ONLY)==0 || x>=0 );
119829 Select *p = yymsp[0].minor.yy3, *pNext, *pLoop;
119835 for(pLoop=p; pLoop; pNext=pLoop, pLoop=pLoop->pPrior, cnt++){
119836 pLoop->pNext = pNext;
119837 pLoop->selFlags |= SF_Compound;