pWInfo 95810 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo; /* Information about the WHERE clause */ pWInfo 95984 ext/sqlite3/libsqlite/sqlite3.c pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, 0, 0, pWInfo 95987 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo==0 ) goto delete_from_cleanup; pWInfo 95988 ext/sqlite3/libsqlite/sqlite3.c okOnePass = sqlite3WhereOkOnePass(pWInfo, aiCurOnePass); pWInfo 96016 ext/sqlite3/libsqlite/sqlite3.c sqlite3WhereEnd(pWInfo); pWInfo 96039 ext/sqlite3/libsqlite/sqlite3.c sqlite3WhereEnd(pWInfo); pWInfo 98778 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo; /* Context used by sqlite3WhereXXX() */ pWInfo 98861 ext/sqlite3/libsqlite/sqlite3.c pWInfo = sqlite3WhereBegin(pParse, pSrc, pWhere, 0, 0, 0, 0); pWInfo 98863 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo ){ pWInfo 98864 ext/sqlite3/libsqlite/sqlite3.c sqlite3WhereEnd(pWInfo); pWInfo 111178 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo; /* Return from sqlite3WhereBegin() */ pWInfo 111464 ext/sqlite3/libsqlite/sqlite3.c pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, sSort.pOrderBy, pWInfo 111466 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo==0 ) goto select_end; pWInfo 111467 ext/sqlite3/libsqlite/sqlite3.c if( sqlite3WhereOutputRowCount(pWInfo) < p->nSelectRow ){ pWInfo 111468 ext/sqlite3/libsqlite/sqlite3.c p->nSelectRow = sqlite3WhereOutputRowCount(pWInfo); pWInfo 111470 ext/sqlite3/libsqlite/sqlite3.c if( sDistinct.isTnct && sqlite3WhereIsDistinct(pWInfo) ){ pWInfo 111471 ext/sqlite3/libsqlite/sqlite3.c sDistinct.eTnctType = sqlite3WhereIsDistinct(pWInfo); pWInfo 111474 ext/sqlite3/libsqlite/sqlite3.c sSort.nOBSat = sqlite3WhereIsOrdered(pWInfo); pWInfo 111490 ext/sqlite3/libsqlite/sqlite3.c sqlite3WhereContinueLabel(pWInfo), pWInfo 111491 ext/sqlite3/libsqlite/sqlite3.c sqlite3WhereBreakLabel(pWInfo)); pWInfo 111495 ext/sqlite3/libsqlite/sqlite3.c sqlite3WhereEnd(pWInfo); pWInfo 111621 ext/sqlite3/libsqlite/sqlite3.c pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, pGroupBy, 0, pWInfo 111624 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo==0 ) goto select_end; pWInfo 111625 ext/sqlite3/libsqlite/sqlite3.c if( sqlite3WhereIsOrdered(pWInfo)==pGroupBy->nExpr ){ pWInfo 111679 ext/sqlite3/libsqlite/sqlite3.c sqlite3WhereEnd(pWInfo); pWInfo 111698 ext/sqlite3/libsqlite/sqlite3.c && (groupBySort || sqlite3WhereIsSorted(pWInfo)) pWInfo 111758 ext/sqlite3/libsqlite/sqlite3.c sqlite3WhereEnd(pWInfo); pWInfo 111914 ext/sqlite3/libsqlite/sqlite3.c pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, pMinMax,0,flag,0); pWInfo 111915 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo==0 ){ pWInfo 111921 ext/sqlite3/libsqlite/sqlite3.c if( sqlite3WhereIsOrdered(pWInfo)>0 ){ pWInfo 111922 ext/sqlite3/libsqlite/sqlite3.c sqlite3VdbeAddOp2(v, OP_Goto, 0, sqlite3WhereBreakLabel(pWInfo)); pWInfo 111926 ext/sqlite3/libsqlite/sqlite3.c sqlite3WhereEnd(pWInfo); pWInfo 113497 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo; /* Information about the WHERE clause */ pWInfo 113747 ext/sqlite3/libsqlite/sqlite3.c pWInfo = sqlite3WhereBegin( pWInfo 113750 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo==0 ) goto update_cleanup; pWInfo 113751 ext/sqlite3/libsqlite/sqlite3.c okOnePass = sqlite3WhereOkOnePass(pWInfo, aiCurOnePass); pWInfo 113762 ext/sqlite3/libsqlite/sqlite3.c sqlite3WhereEnd(pWInfo); pWInfo 113777 ext/sqlite3/libsqlite/sqlite3.c pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, 0, 0, pWInfo 113779 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo==0 ) goto update_cleanup; pWInfo 113780 ext/sqlite3/libsqlite/sqlite3.c okOnePass = sqlite3WhereOkOnePass(pWInfo, aiCurOnePass); pWInfo 113794 ext/sqlite3/libsqlite/sqlite3.c sqlite3WhereEnd(pWInfo); pWInfo 116034 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo; /* WHERE clause processing context */ pWInfo 116100 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo; /* Information about this WHERE */ pWInfo 116199 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE u64 sqlite3WhereOutputRowCount(WhereInfo *pWInfo){ pWInfo 116200 ext/sqlite3/libsqlite/sqlite3.c return sqlite3LogEstToInt(pWInfo->nRowOut); pWInfo 116207 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WhereIsDistinct(WhereInfo *pWInfo){ pWInfo 116208 ext/sqlite3/libsqlite/sqlite3.c return pWInfo->eDistinct; pWInfo 116215 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WhereIsOrdered(WhereInfo *pWInfo){ pWInfo 116216 ext/sqlite3/libsqlite/sqlite3.c return pWInfo->nOBSat; pWInfo 116223 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WhereContinueLabel(WhereInfo *pWInfo){ pWInfo 116224 ext/sqlite3/libsqlite/sqlite3.c assert( pWInfo->iContinue!=0 ); pWInfo 116225 ext/sqlite3/libsqlite/sqlite3.c return pWInfo->iContinue; pWInfo 116232 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WhereBreakLabel(WhereInfo *pWInfo){ pWInfo 116233 ext/sqlite3/libsqlite/sqlite3.c return pWInfo->iBreak; pWInfo 116251 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WhereOkOnePass(WhereInfo *pWInfo, int *aiCur){ pWInfo 116252 ext/sqlite3/libsqlite/sqlite3.c memcpy(aiCur, pWInfo->aiCurOnePass, sizeof(int)*2); pWInfo 116253 ext/sqlite3/libsqlite/sqlite3.c return pWInfo->okOnePass; pWInfo 116309 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo /* The WHERE processing context */ pWInfo 116311 ext/sqlite3/libsqlite/sqlite3.c pWC->pWInfo = pWInfo; pWInfo 116344 ext/sqlite3/libsqlite/sqlite3.c sqlite3 *db = pWC->pWInfo->pParse->db; pWInfo 116385 ext/sqlite3/libsqlite/sqlite3.c sqlite3 *db = pWC->pWInfo->pParse->db; pWInfo 116651 ext/sqlite3/libsqlite/sqlite3.c Parse *pParse = pWC->pWInfo->pParse; pWInfo 117012 ext/sqlite3/libsqlite/sqlite3.c db = pWC->pWInfo->pParse->db; pWInfo 117114 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo = pWC->pWInfo; /* WHERE clause processing context */ pWInfo 117115 ext/sqlite3/libsqlite/sqlite3.c Parse *pParse = pWInfo->pParse; /* Parser context */ pWInfo 117137 ext/sqlite3/libsqlite/sqlite3.c whereClauseInit(pOrWc, pWInfo); pWInfo 117163 ext/sqlite3/libsqlite/sqlite3.c whereClauseInit(pAndWC, pWC->pWInfo); pWInfo 117172 ext/sqlite3/libsqlite/sqlite3.c b |= getMask(&pWInfo->sMaskSet, pAndTerm->leftCursor); pWInfo 117183 ext/sqlite3/libsqlite/sqlite3.c b = getMask(&pWInfo->sMaskSet, pOrTerm->leftCursor); pWInfo 117186 ext/sqlite3/libsqlite/sqlite3.c b |= getMask(&pWInfo->sMaskSet, pOther->leftCursor); pWInfo 117262 ext/sqlite3/libsqlite/sqlite3.c if( (chngToIN & getMask(&pWInfo->sMaskSet, pOrTerm->leftCursor))==0 ){ pWInfo 117281 ext/sqlite3/libsqlite/sqlite3.c assert( chngToIN==getMask(&pWInfo->sMaskSet, iCursor) ); pWInfo 117328 ext/sqlite3/libsqlite/sqlite3.c pList = sqlite3ExprListAppend(pWInfo->pParse, pList, pDup); pWInfo 117376 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo = pWC->pWInfo; /* WHERE clause processing context */ pWInfo 117387 ext/sqlite3/libsqlite/sqlite3.c Parse *pParse = pWInfo->pParse; /* Parsing context */ pWInfo 117394 ext/sqlite3/libsqlite/sqlite3.c pMaskSet = &pWInfo->sMaskSet; pWInfo 119407 ext/sqlite3/libsqlite/sqlite3.c || pTerm->pWC->pWInfo->pParse->db->mallocFailed ); pWInfo 119418 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo, /* Complete information about the WHERE clause */ pWInfo 119440 ext/sqlite3/libsqlite/sqlite3.c pParse = pWInfo->pParse; pWInfo 119442 ext/sqlite3/libsqlite/sqlite3.c pWC = &pWInfo->sWC; pWInfo 119444 ext/sqlite3/libsqlite/sqlite3.c pLevel = &pWInfo->a[iLevel]; pWInfo 119446 ext/sqlite3/libsqlite/sqlite3.c pTabItem = &pWInfo->pTabList->a[pLevel->iFrom]; pWInfo 119448 ext/sqlite3/libsqlite/sqlite3.c pLevel->notReady = notReady & ~getMask(&pWInfo->sMaskSet, iCur); pWInfo 119449 ext/sqlite3/libsqlite/sqlite3.c bRev = (pWInfo->revMask>>iLevel)&1; pWInfo 119451 ext/sqlite3/libsqlite/sqlite3.c && (pWInfo->wctrlFlags & WHERE_FORCE_TABLE)==0; pWInfo 119722 ext/sqlite3/libsqlite/sqlite3.c assert( pWInfo->pOrderBy==0 pWInfo 119723 ext/sqlite3/libsqlite/sqlite3.c || pWInfo->pOrderBy->nExpr==1 pWInfo 119724 ext/sqlite3/libsqlite/sqlite3.c || (pWInfo->wctrlFlags&WHERE_ORDERBY_MIN)==0 ); pWInfo 119725 ext/sqlite3/libsqlite/sqlite3.c if( (pWInfo->wctrlFlags&WHERE_ORDERBY_MIN)!=0 pWInfo 119726 ext/sqlite3/libsqlite/sqlite3.c && pWInfo->nOBSat>0 pWInfo 119995 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo->nLevel>1 ){ pWInfo 119998 ext/sqlite3/libsqlite/sqlite3.c nNotReady = pWInfo->nLevel - iLevel - 1; pWInfo 120005 ext/sqlite3/libsqlite/sqlite3.c origSrc = pWInfo->pTabList->a; pWInfo 120010 ext/sqlite3/libsqlite/sqlite3.c pOrTab = pWInfo->pTabList; pWInfo 120025 ext/sqlite3/libsqlite/sqlite3.c if( (pWInfo->wctrlFlags & WHERE_DUPLICATES_OK)==0 ){ pWInfo 120105 ext/sqlite3/libsqlite/sqlite3.c if( (pWInfo->wctrlFlags & WHERE_DUPLICATES_OK)==0 ){ pWInfo 120204 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo->nLevel>1 ) sqlite3StackFree(db, pOrTab); pWInfo 120244 ext/sqlite3/libsqlite/sqlite3.c testcase( pWInfo->untestedTerms==0 pWInfo 120245 ext/sqlite3/libsqlite/sqlite3.c && (pWInfo->wctrlFlags & WHERE_ONETABLE_ONLY)!=0 ); pWInfo 120246 ext/sqlite3/libsqlite/sqlite3.c pWInfo->untestedTerms = 1; pWInfo 120310 ext/sqlite3/libsqlite/sqlite3.c assert( pWInfo->untestedTerms ); pWInfo 120348 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo = pWC->pWInfo; pWInfo 120349 ext/sqlite3/libsqlite/sqlite3.c int nb = 1+(pWInfo->pTabList->nSrc+7)/8; pWInfo 120350 ext/sqlite3/libsqlite/sqlite3.c struct SrcList_item *pItem = pWInfo->pTabList->a + p->iTab; pWInfo 120477 ext/sqlite3/libsqlite/sqlite3.c static void whereInfoFree(sqlite3 *db, WhereInfo *pWInfo){ pWInfo 120478 ext/sqlite3/libsqlite/sqlite3.c if( ALWAYS(pWInfo) ){ pWInfo 120480 ext/sqlite3/libsqlite/sqlite3.c for(i=0; i<pWInfo->nLevel; i++){ pWInfo 120481 ext/sqlite3/libsqlite/sqlite3.c WhereLevel *pLevel = &pWInfo->a[i]; pWInfo 120486 ext/sqlite3/libsqlite/sqlite3.c whereClauseClear(&pWInfo->sWC); pWInfo 120487 ext/sqlite3/libsqlite/sqlite3.c while( pWInfo->pLoops ){ pWInfo 120488 ext/sqlite3/libsqlite/sqlite3.c WhereLoop *p = pWInfo->pLoops; pWInfo 120489 ext/sqlite3/libsqlite/sqlite3.c pWInfo->pLoops = p->pNextLoop; pWInfo 120492 ext/sqlite3/libsqlite/sqlite3.c sqlite3DbFree(db, pWInfo); pWInfo 120676 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo = pBuilder->pWInfo; pWInfo 120677 ext/sqlite3/libsqlite/sqlite3.c sqlite3 *db = pWInfo->pParse->db; pWInfo 120700 ext/sqlite3/libsqlite/sqlite3.c whereLoopAdjustCost(pWInfo->pLoops, pTemplate); pWInfo 120701 ext/sqlite3/libsqlite/sqlite3.c ppPrev = whereLoopFindLesser(&pWInfo->pLoops, pTemplate); pWInfo 120870 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo = pBuilder->pWInfo; /* WHERE analyse context */ pWInfo 120871 ext/sqlite3/libsqlite/sqlite3.c Parse *pParse = pWInfo->pParse; /* Parsing context */ pWInfo 121152 ext/sqlite3/libsqlite/sqlite3.c if( (pOB = pBuilder->pWInfo->pOrderBy)==0 ) return 0; pWInfo 121241 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo; /* WHERE analysis context */ pWInfo 121258 ext/sqlite3/libsqlite/sqlite3.c pWInfo = pBuilder->pWInfo; pWInfo 121259 ext/sqlite3/libsqlite/sqlite3.c pTabList = pWInfo->pTabList; pWInfo 121300 ext/sqlite3/libsqlite/sqlite3.c && (pWInfo->wctrlFlags & WHERE_NO_AUTOINDEX)==0 pWInfo 121301 ext/sqlite3/libsqlite/sqlite3.c && (pWInfo->pParse->db->flags & SQLITE_AutoIndex)!=0 pWInfo 121366 ext/sqlite3/libsqlite/sqlite3.c assert( (pWInfo->wctrlFlags & WHERE_ONEPASS_DESIRED)==0 || b==0 ); pWInfo 121396 ext/sqlite3/libsqlite/sqlite3.c && (pWInfo->wctrlFlags & WHERE_ONEPASS_DESIRED)==0 pWInfo 121398 ext/sqlite3/libsqlite/sqlite3.c && OptimizationEnabled(pWInfo->pParse->db, SQLITE_CoverIdxScan) pWInfo 121442 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo; /* WHERE analysis context */ pWInfo 121461 ext/sqlite3/libsqlite/sqlite3.c pWInfo = pBuilder->pWInfo; pWInfo 121462 ext/sqlite3/libsqlite/sqlite3.c pParse = pWInfo->pParse; pWInfo 121466 ext/sqlite3/libsqlite/sqlite3.c pSrc = &pWInfo->pTabList->a[pNew->iTab]; pWInfo 121607 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo = pBuilder->pWInfo; pWInfo 121622 ext/sqlite3/libsqlite/sqlite3.c pItem = pWInfo->pTabList->a + pNew->iTab; pWInfo 121644 ext/sqlite3/libsqlite/sqlite3.c tempWC.pWInfo = pWC->pWInfo; pWInfo 121728 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo = pBuilder->pWInfo; pWInfo 121732 ext/sqlite3/libsqlite/sqlite3.c SrcList *pTabList = pWInfo->pTabList; pWInfo 121734 ext/sqlite3/libsqlite/sqlite3.c sqlite3 *db = pWInfo->pParse->db; pWInfo 121735 ext/sqlite3/libsqlite/sqlite3.c int nTabList = pWInfo->nLevel; pWInfo 121745 ext/sqlite3/libsqlite/sqlite3.c pNew->maskSelf = getMask(&pWInfo->sMaskSet, pItem->iCursor); pWInfo 121783 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo, /* The WHERE clause */ pWInfo 121809 ext/sqlite3/libsqlite/sqlite3.c sqlite3 *db = pWInfo->pParse->db; /* Database connection */ pWInfo 121854 ext/sqlite3/libsqlite/sqlite3.c iCur = pWInfo->pTabList->a[pLoop->iTab].iCursor; pWInfo 121866 ext/sqlite3/libsqlite/sqlite3.c pTerm = findTerm(&pWInfo->sWC, iCur, pOBExpr->iColumn, pWInfo 121871 ext/sqlite3/libsqlite/sqlite3.c pColl = sqlite3ExprCollSeq(pWInfo->pParse, pOrderBy->a[i].pExpr); pWInfo 121874 ext/sqlite3/libsqlite/sqlite3.c pColl = sqlite3ExprCollSeq(pWInfo->pParse, pTerm->pExpr); pWInfo 121955 ext/sqlite3/libsqlite/sqlite3.c pColl = sqlite3ExprCollSeq(pWInfo->pParse, pOrderBy->a[i].pExpr); pWInfo 122002 ext/sqlite3/libsqlite/sqlite3.c mTerm = exprTableUsage(&pWInfo->sMaskSet,p); pWInfo 122045 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE int sqlite3WhereIsSorted(WhereInfo *pWInfo){ pWInfo 122046 ext/sqlite3/libsqlite/sqlite3.c assert( pWInfo->wctrlFlags & WHERE_GROUPBY ); pWInfo 122047 ext/sqlite3/libsqlite/sqlite3.c assert( pWInfo->wctrlFlags & WHERE_SORTBYGROUP ); pWInfo 122048 ext/sqlite3/libsqlite/sqlite3.c return pWInfo->sorted; pWInfo 122069 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo, pWInfo 122095 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo->wctrlFlags & WHERE_WANT_DISTINCT ){ pWInfo 122114 ext/sqlite3/libsqlite/sqlite3.c static int wherePathSolver(WhereInfo *pWInfo, LogEst nRowEst){ pWInfo 122136 ext/sqlite3/libsqlite/sqlite3.c pParse = pWInfo->pParse; pWInfo 122138 ext/sqlite3/libsqlite/sqlite3.c nLoop = pWInfo->nLevel; pWInfo 122143 ext/sqlite3/libsqlite/sqlite3.c assert( nLoop<=pWInfo->pTabList->nSrc ); pWInfo 122151 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo->pOrderBy==0 || nRowEst==0 ){ pWInfo 122154 ext/sqlite3/libsqlite/sqlite3.c nOrderBy = pWInfo->pOrderBy->nExpr; pWInfo 122206 ext/sqlite3/libsqlite/sqlite3.c for(pWLoop=pWInfo->pLoops; pWLoop; pWLoop=pWLoop->pNextLoop){ pWInfo 122223 ext/sqlite3/libsqlite/sqlite3.c isOrdered = wherePathSatisfiesOrderBy(pWInfo, pWInfo 122224 ext/sqlite3/libsqlite/sqlite3.c pWInfo->pOrderBy, pFrom, pWInfo->wctrlFlags, pWInfo 122232 ext/sqlite3/libsqlite/sqlite3.c pWInfo, nRowEst, nOrderBy, isOrdered pWInfo 122394 ext/sqlite3/libsqlite/sqlite3.c assert( pWInfo->nLevel==nLoop ); pWInfo 122397 ext/sqlite3/libsqlite/sqlite3.c WhereLevel *pLevel = pWInfo->a + iLoop; pWInfo 122400 ext/sqlite3/libsqlite/sqlite3.c pLevel->iTabCur = pWInfo->pTabList->a[pLevel->iFrom].iCursor; pWInfo 122402 ext/sqlite3/libsqlite/sqlite3.c if( (pWInfo->wctrlFlags & WHERE_WANT_DISTINCT)!=0 pWInfo 122403 ext/sqlite3/libsqlite/sqlite3.c && (pWInfo->wctrlFlags & WHERE_DISTINCTBY)==0 pWInfo 122404 ext/sqlite3/libsqlite/sqlite3.c && pWInfo->eDistinct==WHERE_DISTINCT_NOOP pWInfo 122408 ext/sqlite3/libsqlite/sqlite3.c int rc = wherePathSatisfiesOrderBy(pWInfo, pWInfo->pResultSet, pFrom, pWInfo 122410 ext/sqlite3/libsqlite/sqlite3.c if( rc==pWInfo->pResultSet->nExpr ){ pWInfo 122411 ext/sqlite3/libsqlite/sqlite3.c pWInfo->eDistinct = WHERE_DISTINCT_ORDERED; pWInfo 122414 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo->pOrderBy ){ pWInfo 122415 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo->wctrlFlags & WHERE_DISTINCTBY ){ pWInfo 122416 ext/sqlite3/libsqlite/sqlite3.c if( pFrom->isOrdered==pWInfo->pOrderBy->nExpr ){ pWInfo 122417 ext/sqlite3/libsqlite/sqlite3.c pWInfo->eDistinct = WHERE_DISTINCT_ORDERED; pWInfo 122420 ext/sqlite3/libsqlite/sqlite3.c pWInfo->nOBSat = pFrom->isOrdered; pWInfo 122421 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo->nOBSat<0 ) pWInfo->nOBSat = 0; pWInfo 122422 ext/sqlite3/libsqlite/sqlite3.c pWInfo->revMask = pFrom->revLoop; pWInfo 122424 ext/sqlite3/libsqlite/sqlite3.c if( (pWInfo->wctrlFlags & WHERE_SORTBYGROUP) pWInfo 122425 ext/sqlite3/libsqlite/sqlite3.c && pWInfo->nOBSat==pWInfo->pOrderBy->nExpr && nLoop>0 pWInfo 122428 ext/sqlite3/libsqlite/sqlite3.c int nOrder = wherePathSatisfiesOrderBy(pWInfo, pWInfo->pOrderBy, pWInfo 122431 ext/sqlite3/libsqlite/sqlite3.c assert( pWInfo->sorted==0 ); pWInfo 122432 ext/sqlite3/libsqlite/sqlite3.c if( nOrder==pWInfo->pOrderBy->nExpr ){ pWInfo 122433 ext/sqlite3/libsqlite/sqlite3.c pWInfo->sorted = 1; pWInfo 122434 ext/sqlite3/libsqlite/sqlite3.c pWInfo->revMask = revMask; pWInfo 122440 ext/sqlite3/libsqlite/sqlite3.c pWInfo->nRowOut = pFrom->nRow; pWInfo 122459 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo; pWInfo 122469 ext/sqlite3/libsqlite/sqlite3.c pWInfo = pBuilder->pWInfo; pWInfo 122470 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo->wctrlFlags & WHERE_FORCE_TABLE ) return 0; pWInfo 122471 ext/sqlite3/libsqlite/sqlite3.c assert( pWInfo->pTabList->nSrc>=1 ); pWInfo 122472 ext/sqlite3/libsqlite/sqlite3.c pItem = pWInfo->pTabList->a; pWInfo 122477 ext/sqlite3/libsqlite/sqlite3.c pWC = &pWInfo->sWC; pWInfo 122516 ext/sqlite3/libsqlite/sqlite3.c pWInfo->a[0].pWLoop = pLoop; pWInfo 122517 ext/sqlite3/libsqlite/sqlite3.c pLoop->maskSelf = getMask(&pWInfo->sMaskSet, iCur); pWInfo 122518 ext/sqlite3/libsqlite/sqlite3.c pWInfo->a[0].iTabCur = iCur; pWInfo 122519 ext/sqlite3/libsqlite/sqlite3.c pWInfo->nRowOut = 1; pWInfo 122520 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo->pOrderBy ) pWInfo->nOBSat = pWInfo->pOrderBy->nExpr; pWInfo 122521 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo->wctrlFlags & WHERE_WANT_DISTINCT ){ pWInfo 122522 ext/sqlite3/libsqlite/sqlite3.c pWInfo->eDistinct = WHERE_DISTINCT_UNIQUE; pWInfo 122631 ext/sqlite3/libsqlite/sqlite3.c WhereInfo *pWInfo; /* Will become the return value of this function */ pWInfo 122682 ext/sqlite3/libsqlite/sqlite3.c pWInfo = sqlite3DbMallocZero(db, nByteWInfo + sizeof(WhereLoop)); pWInfo 122684 ext/sqlite3/libsqlite/sqlite3.c sqlite3DbFree(db, pWInfo); pWInfo 122685 ext/sqlite3/libsqlite/sqlite3.c pWInfo = 0; pWInfo 122688 ext/sqlite3/libsqlite/sqlite3.c pWInfo->aiCurOnePass[0] = pWInfo->aiCurOnePass[1] = -1; pWInfo 122689 ext/sqlite3/libsqlite/sqlite3.c pWInfo->nLevel = nTabList; pWInfo 122690 ext/sqlite3/libsqlite/sqlite3.c pWInfo->pParse = pParse; pWInfo 122691 ext/sqlite3/libsqlite/sqlite3.c pWInfo->pTabList = pTabList; pWInfo 122692 ext/sqlite3/libsqlite/sqlite3.c pWInfo->pOrderBy = pOrderBy; pWInfo 122693 ext/sqlite3/libsqlite/sqlite3.c pWInfo->pResultSet = pResultSet; pWInfo 122694 ext/sqlite3/libsqlite/sqlite3.c pWInfo->iBreak = pWInfo->iContinue = sqlite3VdbeMakeLabel(v); pWInfo 122695 ext/sqlite3/libsqlite/sqlite3.c pWInfo->wctrlFlags = wctrlFlags; pWInfo 122696 ext/sqlite3/libsqlite/sqlite3.c pWInfo->savedNQueryLoop = pParse->nQueryLoop; pWInfo 122697 ext/sqlite3/libsqlite/sqlite3.c pMaskSet = &pWInfo->sMaskSet; pWInfo 122698 ext/sqlite3/libsqlite/sqlite3.c sWLB.pWInfo = pWInfo; pWInfo 122699 ext/sqlite3/libsqlite/sqlite3.c sWLB.pWC = &pWInfo->sWC; pWInfo 122700 ext/sqlite3/libsqlite/sqlite3.c sWLB.pNew = (WhereLoop*)(((char*)pWInfo)+nByteWInfo); pWInfo 122711 ext/sqlite3/libsqlite/sqlite3.c whereClauseInit(&pWInfo->sWC, pWInfo); pWInfo 122712 ext/sqlite3/libsqlite/sqlite3.c whereSplit(&pWInfo->sWC, pWhere, TK_AND); pWInfo 122719 ext/sqlite3/libsqlite/sqlite3.c sqlite3ExprIfFalse(pParse, sWLB.pWC->a[ii].pExpr, pWInfo->iBreak, pWInfo 122728 ext/sqlite3/libsqlite/sqlite3.c if( pOrderBy ) pWInfo->nOBSat = pOrderBy->nExpr; pWInfo 122730 ext/sqlite3/libsqlite/sqlite3.c pWInfo->eDistinct = WHERE_DISTINCT_UNIQUE; pWInfo 122769 ext/sqlite3/libsqlite/sqlite3.c exprAnalyzeAll(pTabList, &pWInfo->sWC); pWInfo 122775 ext/sqlite3/libsqlite/sqlite3.c if( isDistinctRedundant(pParse, pTabList, &pWInfo->sWC, pResultSet) ){ pWInfo 122777 ext/sqlite3/libsqlite/sqlite3.c pWInfo->eDistinct = WHERE_DISTINCT_UNIQUE; pWInfo 122780 ext/sqlite3/libsqlite/sqlite3.c pWInfo->wctrlFlags |= WHERE_DISTINCTBY; pWInfo 122781 ext/sqlite3/libsqlite/sqlite3.c pWInfo->pOrderBy = pResultSet; pWInfo 122808 ext/sqlite3/libsqlite/sqlite3.c for(p=pWInfo->pLoops, i=0; p; p=p->pNextLoop, i++){ pWInfo 122815 ext/sqlite3/libsqlite/sqlite3.c wherePathSolver(pWInfo, 0); pWInfo 122817 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo->pOrderBy ){ pWInfo 122818 ext/sqlite3/libsqlite/sqlite3.c wherePathSolver(pWInfo, pWInfo->nRowOut+1); pWInfo 122822 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo->pOrderBy==0 && (db->flags & SQLITE_ReverseOrder)!=0 ){ pWInfo 122823 ext/sqlite3/libsqlite/sqlite3.c pWInfo->revMask = (Bitmask)(-1); pWInfo 122830 ext/sqlite3/libsqlite/sqlite3.c sqlite3DebugPrintf("---- Solution nRow=%d", pWInfo->nRowOut); pWInfo 122831 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo->nOBSat>0 ){ pWInfo 122832 ext/sqlite3/libsqlite/sqlite3.c sqlite3DebugPrintf(" ORDERBY=%d,0x%llx", pWInfo->nOBSat, pWInfo->revMask); pWInfo 122834 ext/sqlite3/libsqlite/sqlite3.c switch( pWInfo->eDistinct ){ pWInfo 122849 ext/sqlite3/libsqlite/sqlite3.c for(ii=0; ii<pWInfo->nLevel; ii++){ pWInfo 122850 ext/sqlite3/libsqlite/sqlite3.c whereLoopPrint(pWInfo->a[ii].pWLoop, sWLB.pWC); pWInfo 122855 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo->nLevel>=2 pWInfo 122861 ext/sqlite3/libsqlite/sqlite3.c while( pWInfo->nLevel>=2 ){ pWInfo 122863 ext/sqlite3/libsqlite/sqlite3.c pLoop = pWInfo->a[pWInfo->nLevel-1].pWLoop; pWInfo 122864 ext/sqlite3/libsqlite/sqlite3.c if( (pWInfo->pTabList->a[pLoop->iTab].jointype & JT_LEFT)==0 ) break; pWInfo 122881 ext/sqlite3/libsqlite/sqlite3.c pWInfo->nLevel--; pWInfo 122886 ext/sqlite3/libsqlite/sqlite3.c pWInfo->pParse->nQueryLoop += pWInfo->nRowOut; pWInfo 122893 ext/sqlite3/libsqlite/sqlite3.c assert( (wctrlFlags & WHERE_ONEPASS_DESIRED)==0 || pWInfo->nLevel==1 ); pWInfo 122895 ext/sqlite3/libsqlite/sqlite3.c && (pWInfo->a[0].pWLoop->wsFlags & WHERE_ONEROW)!=0 ){ pWInfo 122896 ext/sqlite3/libsqlite/sqlite3.c pWInfo->okOnePass = 1; pWInfo 122898 ext/sqlite3/libsqlite/sqlite3.c pWInfo->a[0].pWLoop->wsFlags &= ~WHERE_IDX_ONLY; pWInfo 122906 ext/sqlite3/libsqlite/sqlite3.c for(ii=0, pLevel=pWInfo->a; ii<nTabList; ii++, pLevel++){ pWInfo 122930 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo->okOnePass ){ pWInfo 122932 ext/sqlite3/libsqlite/sqlite3.c pWInfo->aiCurOnePass[0] = pTabItem->iCursor; pWInfo 122936 ext/sqlite3/libsqlite/sqlite3.c testcase( !pWInfo->okOnePass && pTab->nCol==BMS-1 ); pWInfo 122937 ext/sqlite3/libsqlite/sqlite3.c testcase( !pWInfo->okOnePass && pTab->nCol==BMS ); pWInfo 122938 ext/sqlite3/libsqlite/sqlite3.c if( !pWInfo->okOnePass && pTab->nCol<BMS && HasRowid(pTab) ){ pWInfo 122954 ext/sqlite3/libsqlite/sqlite3.c assert( iIdxCur!=0 || (pWInfo->wctrlFlags & WHERE_ONEPASS_DESIRED)==0 ); pWInfo 122962 ext/sqlite3/libsqlite/sqlite3.c }else if( pWInfo->okOnePass ){ pWInfo 122971 ext/sqlite3/libsqlite/sqlite3.c pWInfo->aiCurOnePass[1] = iIndexCur; pWInfo 122986 ext/sqlite3/libsqlite/sqlite3.c && (pWInfo->wctrlFlags&WHERE_ORDERBY_MIN)==0 pWInfo 122994 ext/sqlite3/libsqlite/sqlite3.c notReady &= ~getMask(&pWInfo->sMaskSet, pTabItem->iCursor); pWInfo 122996 ext/sqlite3/libsqlite/sqlite3.c pWInfo->iTop = sqlite3VdbeCurrentAddr(v); pWInfo 123007 ext/sqlite3/libsqlite/sqlite3.c pLevel = &pWInfo->a[ii]; pWInfo 123011 ext/sqlite3/libsqlite/sqlite3.c constructAutomaticIndex(pParse, &pWInfo->sWC, pWInfo 123020 ext/sqlite3/libsqlite/sqlite3.c notReady = codeOneLoopStart(pWInfo, ii, notReady); pWInfo 123021 ext/sqlite3/libsqlite/sqlite3.c pWInfo->iContinue = pLevel->addrCont; pWInfo 123029 ext/sqlite3/libsqlite/sqlite3.c return pWInfo; pWInfo 123033 ext/sqlite3/libsqlite/sqlite3.c if( pWInfo ){ pWInfo 123034 ext/sqlite3/libsqlite/sqlite3.c pParse->nQueryLoop = pWInfo->savedNQueryLoop; pWInfo 123035 ext/sqlite3/libsqlite/sqlite3.c whereInfoFree(db, pWInfo); pWInfo 123044 ext/sqlite3/libsqlite/sqlite3.c SQLITE_PRIVATE void sqlite3WhereEnd(WhereInfo *pWInfo){ pWInfo 123045 ext/sqlite3/libsqlite/sqlite3.c Parse *pParse = pWInfo->pParse; pWInfo 123050 ext/sqlite3/libsqlite/sqlite3.c SrcList *pTabList = pWInfo->pTabList; pWInfo 123057 ext/sqlite3/libsqlite/sqlite3.c for(i=pWInfo->nLevel-1; i>=0; i--){ pWInfo 123059 ext/sqlite3/libsqlite/sqlite3.c pLevel = &pWInfo->a[i]; pWInfo 123118 ext/sqlite3/libsqlite/sqlite3.c pWInfo->pTabList->a[pLevel->iFrom].pTab->zName)); pWInfo 123124 ext/sqlite3/libsqlite/sqlite3.c sqlite3VdbeResolveLabel(v, pWInfo->iBreak); pWInfo 123126 ext/sqlite3/libsqlite/sqlite3.c assert( pWInfo->nLevel<=pTabList->nSrc ); pWInfo 123127 ext/sqlite3/libsqlite/sqlite3.c for(i=0, pLevel=pWInfo->a; i<pWInfo->nLevel; i++, pLevel++){ pWInfo 123167 ext/sqlite3/libsqlite/sqlite3.c && (pWInfo->wctrlFlags & WHERE_OMIT_OPEN_CLOSE)==0 pWInfo 123170 ext/sqlite3/libsqlite/sqlite3.c if( !pWInfo->okOnePass && (ws & WHERE_IDX_ONLY)==0 ){ pWInfo 123175 ext/sqlite3/libsqlite/sqlite3.c && pLevel->iIdxCur!=pWInfo->aiCurOnePass[1] pWInfo 123226 ext/sqlite3/libsqlite/sqlite3.c pParse->nQueryLoop = pWInfo->savedNQueryLoop; pWInfo 123227 ext/sqlite3/libsqlite/sqlite3.c whereInfoFree(db, pWInfo);