Lines Matching refs:pExpr

35 static int incrAggDepth(Walker *pWalker, Expr *pExpr){  in incrAggDepth()  argument
36 if( pExpr->op==TK_AGG_FUNCTION ) pExpr->op2 += pWalker->u.n; in incrAggDepth()
39 static void incrAggFunctionDepth(Expr *pExpr, int N){ in incrAggFunctionDepth() argument
45 sqlite3WalkExpr(&w, pExpr); in incrAggFunctionDepth()
72 Expr *pExpr, /* Transform this into an alias to the result set */ in resolveAlias() argument
80 pOrig = pEList->a[iCol].pExpr; in resolveAlias()
90 if( pExpr->op==TK_COLLATE ){ in resolveAlias()
91 assert( !ExprHasProperty(pExpr, EP_IntValue) ); in resolveAlias()
92 pDup = sqlite3ExprAddCollateString(pParse, pDup, pExpr->u.zToken); in resolveAlias()
95 memcpy(pDup, pExpr, sizeof(Expr)); in resolveAlias()
96 memcpy(pExpr, &temp, sizeof(Expr)); in resolveAlias()
97 if( ExprHasProperty(pExpr, EP_WinFunc) ){ in resolveAlias()
98 if( ALWAYS(pExpr->y.pWin!=0) ){ in resolveAlias()
99 pExpr->y.pWin->pOwner = pExpr; in resolveAlias()
160 Bitmask sqlite3ExprColUsed(Expr *pExpr){ in sqlite3ExprColUsed() argument
164 n = pExpr->iColumn; in sqlite3ExprColUsed()
165 assert( ExprUseYTab(pExpr) ); in sqlite3ExprColUsed()
166 pExTab = pExpr->y.pTab; in sqlite3ExprColUsed()
238 Expr *pExpr /* Make this EXPR node point to the selected column */ in lookupName() argument
257 assert( !ExprHasProperty(pExpr, EP_TokenOnly|EP_Reduced) ); in lookupName()
260 pExpr->iTable = -1; in lookupName()
261 ExprSetVVAProperty(pExpr, EP_NoReduce); in lookupName()
343 extendFJMatch(pParse, &pFJMatch, pMatch, pExpr->iColumn); in lookupName()
349 pExpr->iColumn = j; in lookupName()
368 assert( ExprUseYTab(pExpr) ); in lookupName()
370 sqlite3RenameTokenRemap(pParse, 0, (void*)&pExpr->y.pTab); in lookupName()
399 extendFJMatch(pParse, &pFJMatch, pMatch, pExpr->iColumn); in lookupName()
405 pExpr->iColumn = j==pTab->iPKey ? -1 : (i16)j; in lookupName()
418 pExpr->iTable = pMatch->iCursor; in lookupName()
419 assert( ExprUseYTab(pExpr) ); in lookupName()
420 pExpr->y.pTab = pMatch->pTab; in lookupName()
422 ExprSetProperty(pExpr, EP_CanBeNull); in lookupName()
424 pSchema = pExpr->y.pTab->pSchema; in lookupName()
444 pExpr->iTable = op!=TK_DELETE; in lookupName()
448 pExpr->iTable = 1; in lookupName()
451 pExpr->iTable = 0; in lookupName()
461 pExpr->iTable = EXCLUDED_TABLE_NUMBER; in lookupName()
489 if( pExpr->iTable==EXCLUDED_TABLE_NUMBER ){ in lookupName()
491 assert( ExprUseYTab(pExpr) ); in lookupName()
493 pExpr->iColumn = iCol; in lookupName()
494 pExpr->y.pTab = pTab; in lookupName()
497 pExpr->iTable = pNC->uNC.pUpsert->regData + in lookupName()
504 assert( ExprUseYTab(pExpr) ); in lookupName()
505 pExpr->y.pTab = pTab; in lookupName()
508 pExpr->op2 = TK_COLUMN; in lookupName()
509 pExpr->iTable = pNC->uNC.iBaseReg + (pTab->nCol+1)*pExpr->iTable + in lookupName()
512 pExpr->iColumn = (i16)iCol; in lookupName()
516 pExpr->affExpr = SQLITE_AFF_INTEGER; in lookupName()
517 }else if( pExpr->iTable==0 ){ in lookupName()
545 pExpr->iColumn = -1; in lookupName()
546 pExpr->affExpr = SQLITE_AFF_INTEGER; in lookupName()
579 assert( pExpr->pLeft==0 && pExpr->pRight==0 ); in lookupName()
580 assert( ExprUseXList(pExpr)==0 || pExpr->x.pList==0 ); in lookupName()
581 assert( ExprUseXSelect(pExpr)==0 || pExpr->x.pSelect==0 ); in lookupName()
582 pOrig = pEList->a[j].pExpr; in lookupName()
597 resolveAlias(pParse, pEList, j, pExpr, nSubquery); in lookupName()
602 sqlite3RenameTokenRemap(pParse, 0, (void*)pExpr); in lookupName()
629 assert( pExpr->op==TK_ID ); in lookupName()
630 if( ExprHasProperty(pExpr,EP_DblQuoted) in lookupName()
652 pExpr->op = TK_STRING; in lookupName()
653 memset(&pExpr->y, 0, sizeof(pExpr->y)); in lookupName()
656 if( sqlite3ExprIdToTrueFalse(pExpr) ){ in lookupName()
669 assert( !ExprHasProperty(pExpr, EP_xIsSelect|EP_IntValue) ); in lookupName()
674 if( ExprHasProperty(pExpr,EP_Leaf) ){ in lookupName()
675 ExprClearProperty(pExpr,EP_Leaf); in lookupName()
677 sqlite3ExprDelete(db, pExpr->pLeft); in lookupName()
678 pExpr->pLeft = 0; in lookupName()
679 sqlite3ExprDelete(db, pExpr->pRight); in lookupName()
680 pExpr->pRight = 0; in lookupName()
682 extendFJMatch(pParse, &pFJMatch, pMatch, pExpr->iColumn); in lookupName()
683 pExpr->op = TK_FUNCTION; in lookupName()
684 pExpr->u.zToken = "coalesce"; in lookupName()
685 pExpr->x.pList = pFJMatch; in lookupName()
701 sqlite3RecordErrorOffsetOfExpr(pParse->db, pExpr); in lookupName()
708 if( !ExprHasProperty(pExpr,(EP_TokenOnly|EP_Leaf)) ){ in lookupName()
709 sqlite3ExprDelete(db, pExpr->pLeft); in lookupName()
710 pExpr->pLeft = 0; in lookupName()
711 sqlite3ExprDelete(db, pExpr->pRight); in lookupName()
712 pExpr->pRight = 0; in lookupName()
713 ExprSetProperty(pExpr, EP_Leaf); in lookupName()
730 if( pExpr->iColumn>=0 && pMatch!=0 ){ in lookupName()
731 pMatch->colUsed |= sqlite3ExprColUsed(pExpr); in lookupName()
734 pExpr->op = eNewExprOp; in lookupName()
740 && (pExpr->op==TK_COLUMN || pExpr->op==TK_TRIGGER) in lookupName()
742 sqlite3AuthRead(pParse, pExpr, pSchema, pNC->pSrcList); in lookupName()
811 Expr *pExpr, /* Invalidate this expression on error */ in notValidImpl() argument
823 if( pExpr ) pExpr->op = TK_NULL; in notValidImpl()
856 static int resolveExprStep(Walker *pWalker, Expr *pExpr){ in resolveExprStep() argument
874 switch( pExpr->op ){ in resolveExprStep()
886 pExpr->op = TK_COLUMN; in resolveExprStep()
887 assert( ExprUseYTab(pExpr) ); in resolveExprStep()
888 pExpr->y.pTab = pItem->pTab; in resolveExprStep()
889 pExpr->iTable = pItem->iCursor; in resolveExprStep()
890 pExpr->iColumn--; in resolveExprStep()
891 pExpr->affExpr = SQLITE_AFF_INTEGER; in resolveExprStep()
917 sqlite3WalkExpr(pWalker, pExpr->pLeft); in resolveExprStep()
918 if( 0==sqlite3ExprCanBeNull(pExpr->pLeft) && !IN_RENAME_OBJECT ){ in resolveExprStep()
919 testcase( ExprHasProperty(pExpr, EP_OuterON) ); in resolveExprStep()
920 assert( !ExprHasProperty(pExpr, EP_IntValue) ); in resolveExprStep()
921 if( pExpr->op==TK_NOTNULL ){ in resolveExprStep()
922 pExpr->u.zToken = "true"; in resolveExprStep()
923 ExprSetProperty(pExpr, EP_IsTrue); in resolveExprStep()
925 pExpr->u.zToken = "false"; in resolveExprStep()
926 ExprSetProperty(pExpr, EP_IsFalse); in resolveExprStep()
928 pExpr->op = TK_TRUEFALSE; in resolveExprStep()
932 sqlite3ExprDelete(pParse->db, pExpr->pLeft); in resolveExprStep()
933 pExpr->pLeft = 0; in resolveExprStep()
953 if( pExpr->op==TK_ID ){ in resolveExprStep()
956 assert( !ExprHasProperty(pExpr, EP_IntValue) ); in resolveExprStep()
957 zColumn = pExpr->u.zToken; in resolveExprStep()
959 Expr *pLeft = pExpr->pLeft; in resolveExprStep()
963 NC_IdxExpr|NC_GenCol, 0, pExpr); in resolveExprStep()
964 pRight = pExpr->pRight; in resolveExprStep()
977 assert( ExprUseYTab(pExpr) ); in resolveExprStep()
979 sqlite3RenameTokenRemap(pParse, (void*)pExpr, (void*)pRight); in resolveExprStep()
980 sqlite3RenameTokenRemap(pParse, (void*)&pExpr->y.pTab, (void*)pLeft); in resolveExprStep()
983 return lookupName(pParse, zDb, zTable, zColumn, pNC, pExpr); in resolveExprStep()
989 ExprList *pList = pExpr->x.pList; /* The argument list */ in resolveExprStep()
999 Window *pWin = (IsWindowFunc(pExpr) ? pExpr->y.pWin : 0); in resolveExprStep()
1001 assert( !ExprHasProperty(pExpr, EP_xIsSelect|EP_IntValue) ); in resolveExprStep()
1002 zId = pExpr->u.zToken; in resolveExprStep()
1014 ExprSetProperty(pExpr, EP_Unlikely); in resolveExprStep()
1016 pExpr->iTable = exprProbability(pList->a[1].pExpr); in resolveExprStep()
1017 if( pExpr->iTable<0 ){ in resolveExprStep()
1020 "constant between 0.0 and 1.0", pExpr); in resolveExprStep()
1033 pExpr->iTable = pDef->zName[0]=='u' ? 8388608 : 125829120; in resolveExprStep()
1042 pExpr); in resolveExprStep()
1045 pExpr->op = TK_NULL; in resolveExprStep()
1055 ExprSetProperty(pExpr,EP_ConstFunc); in resolveExprStep()
1065 NC_IdxExpr|NC_PartIdx|NC_GenCol, 0, pExpr); in resolveExprStep()
1068 pExpr->op2 = pNC->ncFlags & NC_SelfRef; in resolveExprStep()
1069 if( pNC->ncFlags & NC_FromDDL ) ExprSetProperty(pExpr, EP_FromDDL); in resolveExprStep()
1085 sqlite3ExprFunctionUsable(pParse, pExpr, pDef); in resolveExprStep()
1097 "%#T() may not be used as a window function", pExpr in resolveExprStep()
1111 sqlite3ErrorMsg(pParse, "misuse of %s function %#T()",zType,pExpr); in resolveExprStep()
1117 sqlite3ErrorMsg(pParse,"misuse of aggregate function %#T()",pExpr); in resolveExprStep()
1127 sqlite3ErrorMsg(pParse, "no such function: %#T", pExpr); in resolveExprStep()
1131 pExpr); in resolveExprStep()
1135 else if( is_agg==0 && ExprHasProperty(pExpr, EP_WinFunc) ){ in resolveExprStep()
1138 pExpr in resolveExprStep()
1155 else if( ExprHasProperty(pExpr, EP_WinFunc) ){ in resolveExprStep()
1164 assert( pWin==0 || (ExprUseYWin(pExpr) && pWin==pExpr->y.pWin) ); in resolveExprStep()
1178 pExpr->op = TK_AGG_FUNCTION; in resolveExprStep()
1179 pExpr->op2 = 0; in resolveExprStep()
1181 if( ExprHasProperty(pExpr, EP_WinFunc) ){ in resolveExprStep()
1182 sqlite3WalkExpr(pWalker, pExpr->y.pWin->pFilter); in resolveExprStep()
1187 && sqlite3ReferencesSrcList(pParse, pExpr, pNC2->pSrcList)==0 in resolveExprStep()
1189 pExpr->op2++; in resolveExprStep()
1212 case TK_EXISTS: testcase( pExpr->op==TK_EXISTS ); in resolveExprStep()
1215 testcase( pExpr->op==TK_IN ); in resolveExprStep()
1216 if( ExprUseXSelect(pExpr) ){ in resolveExprStep()
1223 notValidImpl(pParse, pNC, "subqueries", pExpr, pExpr); in resolveExprStep()
1225 sqlite3WalkSelect(pWalker, pExpr->x.pSelect); in resolveExprStep()
1229 ExprSetProperty(pExpr, EP_VarSelect); in resolveExprStep()
1241 NC_IsCheck|NC_PartIdx|NC_IdxExpr|NC_GenCol, pExpr, pExpr); in resolveExprStep()
1246 Expr *pRight = sqlite3ExprSkipCollateAndLikely(pExpr->pRight); in resolveExprStep()
1247 assert( !ExprHasProperty(pExpr, EP_Reduced) ); in resolveExprStep()
1254 pExpr->op2 = pExpr->op; in resolveExprStep()
1255 pExpr->op = TK_TRUTH; in resolveExprStep()
1270 assert( pExpr->pLeft!=0 ); in resolveExprStep()
1271 nLeft = sqlite3ExprVectorSize(pExpr->pLeft); in resolveExprStep()
1272 if( pExpr->op==TK_BETWEEN ){ in resolveExprStep()
1273 assert( ExprUseXList(pExpr) ); in resolveExprStep()
1274 nRight = sqlite3ExprVectorSize(pExpr->x.pList->a[0].pExpr); in resolveExprStep()
1276 nRight = sqlite3ExprVectorSize(pExpr->x.pList->a[1].pExpr); in resolveExprStep()
1279 assert( pExpr->pRight!=0 ); in resolveExprStep()
1280 nRight = sqlite3ExprVectorSize(pExpr->pRight); in resolveExprStep()
1283 testcase( pExpr->op==TK_EQ ); in resolveExprStep()
1284 testcase( pExpr->op==TK_NE ); in resolveExprStep()
1285 testcase( pExpr->op==TK_LT ); in resolveExprStep()
1286 testcase( pExpr->op==TK_LE ); in resolveExprStep()
1287 testcase( pExpr->op==TK_GT ); in resolveExprStep()
1288 testcase( pExpr->op==TK_GE ); in resolveExprStep()
1289 testcase( pExpr->op==TK_IS ); in resolveExprStep()
1290 testcase( pExpr->op==TK_ISNOT ); in resolveExprStep()
1291 testcase( pExpr->op==TK_BETWEEN ); in resolveExprStep()
1293 sqlite3RecordErrorOffsetOfExpr(pParse->db, pExpr); in resolveExprStep()
1391 if( sqlite3ExprCompare(0, pEList->a[i].pExpr, pE, -1)<2 ){ in resolveOrderByTermToExprList()
1465 pE = sqlite3ExprSkipCollateAndLikely(pItem->pExpr); in resolveCompoundOrderBy()
1505 if( pItem->pExpr==pE ){ in resolveCompoundOrderBy()
1506 pItem->pExpr = pNew; in resolveCompoundOrderBy()
1508 Expr *pParent = pItem->pExpr; in resolveCompoundOrderBy()
1568 resolveAlias(pParse, pEList, pItem->u.x.iOrderByCol-1, pItem->pExpr,0); in sqlite3ResolveOrderGroupBy()
1578 static int resolveRemoveWindowsCb(Walker *pWalker, Expr *pExpr){ in resolveRemoveWindowsCb() argument
1580 if( ExprHasProperty(pExpr, EP_WinFunc) ){ in resolveRemoveWindowsCb()
1581 Window *pWin = pExpr->y.pWin; in resolveRemoveWindowsCb()
1591 static void windowRemoveExprFromSelect(Select *pSelect, Expr *pExpr){ in windowRemoveExprFromSelect() argument
1597 sqlite3WalkExpr(&sWalker, pExpr); in windowRemoveExprFromSelect()
1638 Expr *pE = pItem->pExpr; in resolveOrderGroupBy()
1670 if( sqlite3ExprCompare(0, pE, pSelect->pEList->a[j].pExpr, -1)==0 ){ in resolveOrderGroupBy()
1894 if( ExprHasProperty(pItem->pExpr, EP_Agg) ){ in resolveSelectStep()
1975 Expr *pExpr /* The expression to be analyzed. */ in sqlite3ResolveExprNames() argument
1980 if( pExpr==0 ) return SQLITE_OK; in sqlite3ResolveExprNames()
1989 w.pParse->nHeight += pExpr->nHeight; in sqlite3ResolveExprNames()
1994 sqlite3WalkExpr(&w, pExpr); in sqlite3ResolveExprNames()
1996 w.pParse->nHeight -= pExpr->nHeight; in sqlite3ResolveExprNames()
2002 ExprSetProperty(pExpr, pNC->ncFlags & (NC_HasAgg|NC_HasWin) ); in sqlite3ResolveExprNames()
2028 Expr *pExpr = pList->a[i].pExpr; in sqlite3ResolveExprListNames() local
2029 if( pExpr==0 ) continue; in sqlite3ResolveExprListNames()
2031 w.pParse->nHeight += pExpr->nHeight; in sqlite3ResolveExprListNames()
2036 sqlite3WalkExpr(&w, pExpr); in sqlite3ResolveExprListNames()
2038 w.pParse->nHeight -= pExpr->nHeight; in sqlite3ResolveExprListNames()
2045 ExprSetProperty(pExpr, pNC->ncFlags & (NC_HasAgg|NC_HasWin) ); in sqlite3ResolveExprListNames()
2106 Expr *pExpr, /* Expression to resolve. May be NULL. */ in sqlite3ResolveSelfReference() argument
2132 if( (rc = sqlite3ResolveExprNames(&sNC, pExpr))!=SQLITE_OK ) return rc; in sqlite3ResolveSelfReference()