Lines Matching refs:pWC
60 static int whereClauseInsert(WhereClause *pWC, Expr *p, u16 wtFlags){ in whereClauseInsert() argument
64 if( pWC->nTerm>=pWC->nSlot ){ in whereClauseInsert()
65 WhereTerm *pOld = pWC->a; in whereClauseInsert()
66 sqlite3 *db = pWC->pWInfo->pParse->db; in whereClauseInsert()
67 pWC->a = sqlite3WhereMalloc(pWC->pWInfo, sizeof(pWC->a[0])*pWC->nSlot*2 ); in whereClauseInsert()
68 if( pWC->a==0 ){ in whereClauseInsert()
72 pWC->a = pOld; in whereClauseInsert()
75 memcpy(pWC->a, pOld, sizeof(pWC->a[0])*pWC->nTerm); in whereClauseInsert()
76 pWC->nSlot = pWC->nSlot*2; in whereClauseInsert()
78 pTerm = &pWC->a[idx = pWC->nTerm++]; in whereClauseInsert()
79 if( (wtFlags & TERM_VIRTUAL)==0 ) pWC->nBase = pWC->nTerm; in whereClauseInsert()
87 pTerm->pWC = pWC; in whereClauseInsert()
471 static void markTermAsChild(WhereClause *pWC, int iChild, int iParent){ in markTermAsChild() argument
472 pWC->a[iChild].iParent = iParent; in markTermAsChild()
473 pWC->a[iChild].truthProb = pWC->a[iParent].truthProb; in markTermAsChild()
474 pWC->a[iParent].nChild++; in markTermAsChild()
514 WhereClause *pWC, /* The complete WHERE clause */ in whereCombineDisjuncts() argument
542 db = pWC->pWInfo->pParse->db; in whereCombineDisjuncts()
547 idxNew = whereClauseInsert(pWC, pNew, TERM_VIRTUAL|TERM_DYNAMIC); in whereCombineDisjuncts()
548 exprAnalyze(pSrc, pWC, idxNew); in whereCombineDisjuncts()
641 WhereClause *pWC, /* the complete WHERE clause */ in exprAnalyzeOrTerm() argument
644 WhereInfo *pWInfo = pWC->pWInfo; /* WHERE clause processing context */ in exprAnalyzeOrTerm()
647 WhereTerm *pTerm = &pWC->a[idxTerm]; /* The term to be analyzed */ in exprAnalyzeOrTerm()
696 sqlite3WhereClauseInit(pAndWC, pWC->pWInfo); in exprAnalyzeOrTerm()
699 pAndWC->pOuter = pWC; in exprAnalyzeOrTerm()
739 pWC->hasOr = 1; in exprAnalyzeOrTerm()
751 whereCombineDisjuncts(pSrc, pWC, pOne, pTwo); in exprAnalyzeOrTerm()
885 idxNew = whereClauseInsert(pWC, pNew, TERM_VIRTUAL|TERM_DYNAMIC); in exprAnalyzeOrTerm()
887 exprAnalyze(pSrc, pWC, idxNew); in exprAnalyzeOrTerm()
889 markTermAsChild(pWC, idxNew, idxTerm); in exprAnalyzeOrTerm()
1050 WhereClause *pWC, /* the WHERE clause */ in exprAnalyze() argument
1053 WhereInfo *pWInfo = pWC->pWInfo; /* WHERE clause processing context */ in exprAnalyze()
1072 assert( pWC->nTerm > idxTerm ); in exprAnalyze()
1073 pTerm = &pWC->a[idxTerm]; in exprAnalyze()
1174 idxNew = whereClauseInsert(pWC, pDup, TERM_VIRTUAL|TERM_DYNAMIC); in exprAnalyze()
1176 pNew = &pWC->a[idxNew]; in exprAnalyze()
1177 markTermAsChild(pWC, idxNew, idxTerm); in exprAnalyze()
1179 pTerm = &pWC->a[idxTerm]; in exprAnalyze()
1228 else if( pExpr->op==TK_BETWEEN && pWC->op==TK_AND ){ in exprAnalyze()
1243 idxNew = whereClauseInsert(pWC, pNewExpr, TERM_VIRTUAL|TERM_DYNAMIC); in exprAnalyze()
1245 exprAnalyze(pSrc, pWC, idxNew); in exprAnalyze()
1246 pTerm = &pWC->a[idxTerm]; in exprAnalyze()
1247 markTermAsChild(pWC, idxNew, idxTerm); in exprAnalyze()
1257 assert( pWC->op==TK_AND ); in exprAnalyze()
1258 exprAnalyzeOrTerm(pSrc, pWC, idxTerm); in exprAnalyze()
1259 pTerm = &pWC->a[idxTerm]; in exprAnalyze()
1282 idxNew = whereClauseInsert(pWC, pNewExpr, in exprAnalyze()
1285 pNewTerm = &pWC->a[idxNew]; in exprAnalyze()
1290 markTermAsChild(pWC, idxNew, idxTerm); in exprAnalyze()
1291 pTerm = &pWC->a[idxTerm]; in exprAnalyze()
1314 && pWC->op==TK_AND in exprAnalyze()
1369 idxNew1 = whereClauseInsert(pWC, pNewExpr1, wtFlags); in exprAnalyze()
1371 exprAnalyze(pSrc, pWC, idxNew1); in exprAnalyze()
1377 idxNew2 = whereClauseInsert(pWC, pNewExpr2, wtFlags); in exprAnalyze()
1379 exprAnalyze(pSrc, pWC, idxNew2); in exprAnalyze()
1380 pTerm = &pWC->a[idxTerm]; in exprAnalyze()
1382 markTermAsChild(pWC, idxNew1, idxTerm); in exprAnalyze()
1383 markTermAsChild(pWC, idxNew2, idxTerm); in exprAnalyze()
1403 && pWC->op==TK_AND in exprAnalyze()
1414 idxNew = whereClauseInsert(pWC, pNew, TERM_DYNAMIC|TERM_SLICE); in exprAnalyze()
1415 exprAnalyze(pSrc, pWC, idxNew); in exprAnalyze()
1417 pTerm = &pWC->a[idxTerm]; in exprAnalyze()
1439 && pWC->op==TK_AND in exprAnalyze()
1444 idxNew = whereClauseInsert(pWC, pExpr, TERM_VIRTUAL|TERM_SLICE); in exprAnalyze()
1445 pWC->a[idxNew].u.x.iField = i+1; in exprAnalyze()
1446 exprAnalyze(pSrc, pWC, idxNew); in exprAnalyze()
1447 markTermAsChild(pWC, idxNew, idxTerm); in exprAnalyze()
1461 else if( pWC->op==TK_AND ){ in exprAnalyze()
1479 idxNew = whereClauseInsert(pWC, pNewExpr, TERM_VIRTUAL|TERM_DYNAMIC); in exprAnalyze()
1481 pNewTerm = &pWC->a[idxNew]; in exprAnalyze()
1487 markTermAsChild(pWC, idxNew, idxTerm); in exprAnalyze()
1488 pTerm = &pWC->a[idxTerm]; in exprAnalyze()
1500 testcase( pTerm!=&pWC->a[idxTerm] ); in exprAnalyze()
1501 pTerm = &pWC->a[idxTerm]; in exprAnalyze()
1527 void sqlite3WhereSplit(WhereClause *pWC, Expr *pExpr, u8 op){ in sqlite3WhereSplit() argument
1529 pWC->op = op; in sqlite3WhereSplit()
1533 whereClauseInsert(pWC, pExpr, 0); in sqlite3WhereSplit()
1535 sqlite3WhereSplit(pWC, pE2->pLeft, op); in sqlite3WhereSplit()
1536 sqlite3WhereSplit(pWC, pE2->pRight, op); in sqlite3WhereSplit()
1552 WhereClause *pWC, /* Add the constraint to this WHERE clause */ in whereAddLimitExpr() argument
1558 Parse *pParse = pWC->pWInfo->pParse; in whereAddLimitExpr()
1578 idx = whereClauseInsert(pWC, pNew, TERM_DYNAMIC|TERM_VIRTUAL); in whereAddLimitExpr()
1579 pTerm = &pWC->a[idx]; in whereAddLimitExpr()
1604 void SQLITE_NOINLINE sqlite3WhereAddLimit(WhereClause *pWC, Select *p){ in sqlite3WhereAddLimit() argument
1615 for(ii=0; ii<pWC->nTerm; ii++){ in sqlite3WhereAddLimit()
1616 if( pWC->a[ii].wtFlags & TERM_CODED ){ in sqlite3WhereAddLimit()
1619 assert( pWC->a[ii].wtFlags & TERM_VIRTUAL ); in sqlite3WhereAddLimit()
1620 assert( pWC->a[ii].eOperator==WO_ROWVAL ); in sqlite3WhereAddLimit()
1623 if( pWC->a[ii].leftCursor!=iCsr ) return; in sqlite3WhereAddLimit()
1638 whereAddLimitExpr(pWC, p->iLimit, p->pLimit->pLeft, in sqlite3WhereAddLimit()
1641 whereAddLimitExpr(pWC, p->iOffset, p->pLimit->pRight, in sqlite3WhereAddLimit()
1651 WhereClause *pWC, /* The WhereClause to be initialized */ in sqlite3WhereClauseInit() argument
1654 pWC->pWInfo = pWInfo; in sqlite3WhereClauseInit()
1655 pWC->hasOr = 0; in sqlite3WhereClauseInit()
1656 pWC->pOuter = 0; in sqlite3WhereClauseInit()
1657 pWC->nTerm = 0; in sqlite3WhereClauseInit()
1658 pWC->nBase = 0; in sqlite3WhereClauseInit()
1659 pWC->nSlot = ArraySize(pWC->aStatic); in sqlite3WhereClauseInit()
1660 pWC->a = pWC->aStatic; in sqlite3WhereClauseInit()
1668 void sqlite3WhereClauseClear(WhereClause *pWC){ in sqlite3WhereClauseClear() argument
1669 sqlite3 *db = pWC->pWInfo->pParse->db; in sqlite3WhereClauseClear()
1670 assert( pWC->nTerm>=pWC->nBase ); in sqlite3WhereClauseClear()
1671 if( pWC->nTerm>0 ){ in sqlite3WhereClauseClear()
1672 WhereTerm *a = pWC->a; in sqlite3WhereClauseClear()
1673 WhereTerm *aLast = &pWC->a[pWC->nTerm-1]; in sqlite3WhereClauseClear()
1677 for(i=pWC->nBase; i<pWC->nTerm; i++){ in sqlite3WhereClauseClear()
1678 assert( (pWC->a[i].wtFlags & TERM_VIRTUAL)!=0 ); in sqlite3WhereClauseClear()
1793 WhereClause *pWC /* the WHERE clause to be analyzed */ in sqlite3WhereExprAnalyze() argument
1796 for(i=pWC->nTerm-1; i>=0; i--){ in sqlite3WhereExprAnalyze()
1797 exprAnalyze(pTabList, pWC, i); in sqlite3WhereExprAnalyze()
1811 WhereClause *pWC /* Xfer function arguments to here */ in sqlite3WhereTabFuncArgs() argument
1848 whereClauseInsert(pWC, pTerm, TERM_DYNAMIC); in sqlite3WhereTabFuncArgs()