Lines Matching refs:pExpr
85 pTerm->pExpr = sqlite3ExprSkipCollateAndLikely(p); in whereClauseInsert()
111 static u16 exprCommute(Parse *pParse, Expr *pExpr){ in exprCommute() argument
112 if( pExpr->pLeft->op==TK_VECTOR in exprCommute()
113 || pExpr->pRight->op==TK_VECTOR in exprCommute()
114 || sqlite3BinaryCompareCollSeq(pParse, pExpr->pLeft, pExpr->pRight) != in exprCommute()
115 sqlite3BinaryCompareCollSeq(pParse, pExpr->pRight, pExpr->pLeft) in exprCommute()
117 pExpr->flags ^= EP_Commuted; in exprCommute()
119 SWAP(Expr*,pExpr->pRight,pExpr->pLeft); in exprCommute()
120 if( pExpr->op>=TK_GT ){ in exprCommute()
125 assert( pExpr->op>=TK_GT && pExpr->op<=TK_GE ); in exprCommute()
126 pExpr->op = ((pExpr->op-TK_GT)^2)+TK_GT; in exprCommute()
174 Expr *pExpr, /* Test this expression */ in isLikeOrGlob() argument
190 if( !sqlite3IsLikeFunction(db, pExpr, pnoCase, (char*)wc) ){ in isLikeOrGlob()
196 assert( ExprUseXList(pExpr) ); in isLikeOrGlob()
197 pList = pExpr->x.pList; in isLikeOrGlob()
198 pLeft = pList->a[1].pExpr; in isLikeOrGlob()
200 pRight = sqlite3ExprSkipCollate(pList->a[0].pExpr); in isLikeOrGlob()
353 Expr *pExpr, /* Test this expression */ in isAuxiliaryVtabOperator() argument
358 if( pExpr->op==TK_FUNCTION ){ in isAuxiliaryVtabOperator()
372 assert( ExprUseXList(pExpr) ); in isAuxiliaryVtabOperator()
373 pList = pExpr->x.pList; in isAuxiliaryVtabOperator()
385 pCol = pList->a[1].pExpr; in isAuxiliaryVtabOperator()
389 assert( !ExprHasProperty(pExpr, EP_IntValue) ); in isAuxiliaryVtabOperator()
390 if( sqlite3StrICmp(pExpr->u.zToken, aOp[i].zOp)==0 ){ in isAuxiliaryVtabOperator()
392 *ppRight = pList->a[0].pExpr; in isAuxiliaryVtabOperator()
409 pCol = pList->a[0].pExpr; in isAuxiliaryVtabOperator()
420 assert( !ExprHasProperty(pExpr, EP_IntValue) ); in isAuxiliaryVtabOperator()
423 i = pMod->xFindFunction(pVtab,2, pExpr->u.zToken, &xNotUsed, &pNotUsed); in isAuxiliaryVtabOperator()
426 *ppRight = pList->a[1].pExpr; in isAuxiliaryVtabOperator()
432 }else if( pExpr->op==TK_NE || pExpr->op==TK_ISNOT || pExpr->op==TK_NOTNULL ){ in isAuxiliaryVtabOperator()
434 Expr *pLeft = pExpr->pLeft; in isAuxiliaryVtabOperator()
435 Expr *pRight = pExpr->pRight; in isAuxiliaryVtabOperator()
448 if( pExpr->op==TK_NE ) *peOp2 = SQLITE_INDEX_CONSTRAINT_NE; in isAuxiliaryVtabOperator()
449 if( pExpr->op==TK_ISNOT ) *peOp2 = SQLITE_INDEX_CONSTRAINT_ISNOT; in isAuxiliaryVtabOperator()
450 if( pExpr->op==TK_NOTNULL ) *peOp2 = SQLITE_INDEX_CONSTRAINT_ISNOTNULL; in isAuxiliaryVtabOperator()
529 assert( pOne->pExpr->pLeft!=0 && pOne->pExpr->pRight!=0 ); in whereCombineDisjuncts()
530 assert( pTwo->pExpr->pLeft!=0 && pTwo->pExpr->pRight!=0 ); in whereCombineDisjuncts()
531 if( sqlite3ExprCompare(0,pOne->pExpr->pLeft, pTwo->pExpr->pLeft, -1) ) return; in whereCombineDisjuncts()
532 if( sqlite3ExprCompare(0,pOne->pExpr->pRight, pTwo->pExpr->pRight,-1) )return; in whereCombineDisjuncts()
543 pNew = sqlite3ExprDup(db, pOne->pExpr, 0); in whereCombineDisjuncts()
648 Expr *pExpr = pTerm->pExpr; /* The expression of the term */ in exprAnalyzeOrTerm() local
662 assert( pExpr->op==TK_OR ); in exprAnalyzeOrTerm()
669 sqlite3WhereSplit(pOrWc, pExpr, TK_OR); in exprAnalyzeOrTerm()
697 sqlite3WhereSplit(pAndWC, pOrTerm->pExpr, TK_AND); in exprAnalyzeOrTerm()
702 assert( pAndTerm->pExpr ); in exprAnalyzeOrTerm()
703 if( allowedOp(pAndTerm->pExpr->op) in exprAnalyzeOrTerm()
815 pLeft = pOrTerm->pExpr->pLeft; in exprAnalyzeOrTerm()
837 && sqlite3ExprCompare(pParse, pOrTerm->pExpr->pLeft, pLeft, -1) in exprAnalyzeOrTerm()
846 affRight = sqlite3ExprAffinity(pOrTerm->pExpr->pRight); in exprAnalyzeOrTerm()
847 affLeft = sqlite3ExprAffinity(pOrTerm->pExpr->pLeft); in exprAnalyzeOrTerm()
873 pDup = sqlite3ExprDup(db, pOrTerm->pExpr->pRight, 0); in exprAnalyzeOrTerm()
875 pLeft = pOrTerm->pExpr->pLeft; in exprAnalyzeOrTerm()
882 transferJoinMarkings(pNew, pExpr); in exprAnalyzeOrTerm()
913 static int termIsEquivalence(Parse *pParse, Expr *pExpr){ in termIsEquivalence() argument
917 if( pExpr->op!=TK_EQ && pExpr->op!=TK_IS ) return 0; in termIsEquivalence()
918 if( ExprHasProperty(pExpr, EP_OuterON) ) return 0; in termIsEquivalence()
919 aff1 = sqlite3ExprAffinity(pExpr->pLeft); in termIsEquivalence()
920 aff2 = sqlite3ExprAffinity(pExpr->pRight); in termIsEquivalence()
926 pColl = sqlite3ExprCompareCollSeq(pParse, pExpr); in termIsEquivalence()
928 return sqlite3ExprCollSeqMatch(pParse, pExpr->pLeft, pExpr->pRight); in termIsEquivalence()
979 Expr *pExpr /* An operand of a comparison operator */ in exprMightBeIndexed2() argument
991 if( sqlite3ExprCompareSkip(pExpr, pIdx->aColExpr->a[i].pExpr, iCur)==0 ){ in exprMightBeIndexed2()
1004 Expr *pExpr, /* An operand of a comparison operator */ in exprMightBeIndexed() argument
1013 if( pExpr->op==TK_VECTOR && (op>=TK_GT && ALWAYS(op<=TK_GE)) ){ in exprMightBeIndexed()
1014 assert( ExprUseXList(pExpr) ); in exprMightBeIndexed()
1015 pExpr = pExpr->x.pList->a[0].pExpr; in exprMightBeIndexed()
1019 if( pExpr->op==TK_COLUMN ){ in exprMightBeIndexed()
1020 aiCurCol[0] = pExpr->iTable; in exprMightBeIndexed()
1021 aiCurCol[1] = pExpr->iColumn; in exprMightBeIndexed()
1026 return exprMightBeIndexed2(pFrom,mPrereq,aiCurCol,pExpr); in exprMightBeIndexed()
1056 Expr *pExpr; /* The expression to be analyzed */ in exprAnalyze() local
1075 pExpr = pTerm->pExpr; in exprAnalyze()
1076 assert( pExpr!=0 ); /* Because malloc() has not failed */ in exprAnalyze()
1077 assert( pExpr->op!=TK_AS && pExpr->op!=TK_COLLATE ); in exprAnalyze()
1079 prereqLeft = sqlite3WhereExprUsage(pMaskSet, pExpr->pLeft); in exprAnalyze()
1080 op = pExpr->op; in exprAnalyze()
1082 assert( pExpr->pRight==0 ); in exprAnalyze()
1083 if( sqlite3ExprCheckIN(pParse, pExpr) ) return; in exprAnalyze()
1084 if( ExprUseXSelect(pExpr) ){ in exprAnalyze()
1085 pTerm->prereqRight = exprSelectUsage(pMaskSet, pExpr->x.pSelect); in exprAnalyze()
1087 pTerm->prereqRight = sqlite3WhereExprListUsage(pMaskSet, pExpr->x.pList); in exprAnalyze()
1091 pTerm->prereqRight = sqlite3WhereExprUsage(pMaskSet, pExpr->pRight); in exprAnalyze()
1092 if( pExpr->pLeft==0 in exprAnalyze()
1093 || ExprHasProperty(pExpr, EP_xIsSelect|EP_IfNullRow) in exprAnalyze()
1094 || pExpr->x.pList!=0 in exprAnalyze()
1096 prereqAll = sqlite3WhereExprUsageNN(pMaskSet, pExpr); in exprAnalyze()
1104 if( prereqAll!=sqlite3WhereExprUsageNN(pMaskSet, pExpr) ){ in exprAnalyze()
1106 sqlite3TreeViewExpr(0,pExpr,0); in exprAnalyze()
1111 if( ExprHasProperty(pExpr, EP_OuterON|EP_InnerON) ){ in exprAnalyze()
1112 Bitmask x = sqlite3WhereGetMask(pMaskSet, pExpr->w.iJoin); in exprAnalyze()
1113 if( ExprHasProperty(pExpr, EP_OuterON) ){ in exprAnalyze()
1132 ExprClearProperty(pExpr, EP_InnerON); in exprAnalyze()
1141 Expr *pLeft = sqlite3ExprSkipCollate(pExpr->pLeft); in exprAnalyze()
1142 Expr *pRight = sqlite3ExprSkipCollate(pExpr->pRight); in exprAnalyze()
1149 pLeft = pLeft->x.pList->a[pTerm->u.x.iField-1].pExpr; in exprAnalyze()
1169 pDup = sqlite3ExprDup(db, pExpr, 0); in exprAnalyze()
1187 pDup = pExpr; in exprAnalyze()
1200 && !ExprHasProperty(pExpr,EP_OuterON) in exprAnalyze()
1203 assert( !ExprHasProperty(pExpr, EP_IntValue) ); in exprAnalyze()
1204 pExpr->op = TK_TRUEFALSE; in exprAnalyze()
1205 pExpr->u.zToken = "false"; in exprAnalyze()
1206 ExprSetProperty(pExpr, EP_IsFalse); in exprAnalyze()
1228 else if( pExpr->op==TK_BETWEEN && pWC->op==TK_AND ){ in exprAnalyze()
1232 assert( ExprUseXList(pExpr) ); in exprAnalyze()
1233 pList = pExpr->x.pList; in exprAnalyze()
1240 sqlite3ExprDup(db, pExpr->pLeft, 0), in exprAnalyze()
1241 sqlite3ExprDup(db, pList->a[i].pExpr, 0)); in exprAnalyze()
1242 transferJoinMarkings(pNewExpr, pExpr); in exprAnalyze()
1256 else if( pExpr->op==TK_OR ){ in exprAnalyze()
1268 else if( pExpr->op==TK_NOTNULL ){ in exprAnalyze()
1269 if( pExpr->pLeft->op==TK_COLUMN in exprAnalyze()
1270 && pExpr->pLeft->iColumn>=0 in exprAnalyze()
1271 && !ExprHasProperty(pExpr, EP_OuterON) in exprAnalyze()
1274 Expr *pLeft = pExpr->pLeft; in exprAnalyze()
1313 else if( pExpr->op==TK_FUNCTION in exprAnalyze()
1315 && isLikeOrGlob(pParse, pExpr, &pStr1, &isComplete, &noCase) in exprAnalyze()
1326 assert( ExprUseXList(pExpr) ); in exprAnalyze()
1327 pLeft = pExpr->x.pList->a[1].pExpr; in exprAnalyze()
1368 transferJoinMarkings(pNewExpr1, pExpr); in exprAnalyze()
1376 transferJoinMarkings(pNewExpr2, pExpr); in exprAnalyze()
1398 if( (pExpr->op==TK_EQ || pExpr->op==TK_IS) in exprAnalyze()
1399 && (nLeft = sqlite3ExprVectorSize(pExpr->pLeft))>1 in exprAnalyze()
1400 && sqlite3ExprVectorSize(pExpr->pRight)==nLeft in exprAnalyze()
1401 && ( (pExpr->pLeft->flags & EP_xIsSelect)==0 in exprAnalyze()
1402 || (pExpr->pRight->flags & EP_xIsSelect)==0) in exprAnalyze()
1409 Expr *pLeft = sqlite3ExprForVectorField(pParse, pExpr->pLeft, i, nLeft); in exprAnalyze()
1410 Expr *pRight = sqlite3ExprForVectorField(pParse, pExpr->pRight, i, nLeft); in exprAnalyze()
1412 pNew = sqlite3PExpr(pParse, pExpr->op, pLeft, pRight); in exprAnalyze()
1413 transferJoinMarkings(pNew, pExpr); in exprAnalyze()
1431 else if( pExpr->op==TK_IN in exprAnalyze()
1433 && pExpr->pLeft->op==TK_VECTOR in exprAnalyze()
1434 && ALWAYS( ExprUseXSelect(pExpr) ) in exprAnalyze()
1435 && pExpr->x.pSelect->pPrior==0 in exprAnalyze()
1437 && pExpr->x.pSelect->pWin==0 in exprAnalyze()
1442 for(i=0; i<sqlite3ExprVectorSize(pExpr->pLeft); i++){ in exprAnalyze()
1444 idxNew = whereClauseInsert(pWC, pExpr, TERM_VIRTUAL|TERM_SLICE); in exprAnalyze()
1463 int res = isAuxiliaryVtabOperator(db, pExpr, &eOp2, &pLeft, &pRight); in exprAnalyze()
1475 if( ExprHasProperty(pExpr, EP_OuterON) && pNewExpr ){ in exprAnalyze()
1477 pNewExpr->w.iJoin = pExpr->w.iJoin; in exprAnalyze()
1527 void sqlite3WhereSplit(WhereClause *pWC, Expr *pExpr, u8 op){ in sqlite3WhereSplit() argument
1528 Expr *pE2 = sqlite3ExprSkipCollateAndLikely(pExpr); in sqlite3WhereSplit()
1530 assert( pE2!=0 || pExpr==0 ); in sqlite3WhereSplit()
1533 whereClauseInsert(pWC, pExpr, 0); in sqlite3WhereSplit()
1554 Expr *pExpr, /* Expression that defines the limit/offset */ in whereAddLimitExpr() argument
1563 if( sqlite3ExprIsInteger(pExpr, &iVal) && iVal>=0 ){ in whereAddLimitExpr()
1629 Expr *pExpr = pOrderBy->a[ii].pExpr; in sqlite3WhereAddLimit() local
1630 if( pExpr->op!=TK_COLUMN ) return; in sqlite3WhereAddLimit()
1631 if( pExpr->iTable!=iCsr ) return; in sqlite3WhereAddLimit()
1684 sqlite3ExprDelete(db, a->pExpr); in sqlite3WhereClauseClear()
1776 mask |= sqlite3WhereExprUsage(pMaskSet, pList->a[i].pExpr); in sqlite3WhereExprListUsage()
1840 sqlite3ExprDup(pParse->db, pArgs->a[j].pExpr, 0), 0); in sqlite3WhereTabFuncArgs()