Lines Matching refs:pParse

19 static int exprCodeVector(Parse *pParse, Expr *p, int *piToFree);
98 const Parse *pParse, /* Parsing context */ in sqlite3ExprAddCollateToken() argument
104 Expr *pNew = sqlite3ExprAlloc(pParse->db, TK_COLLATE, pCollName, dequote); in sqlite3ExprAddCollateToken()
114 const Parse *pParse, /* Parsing context */ in sqlite3ExprAddCollateString() argument
121 return sqlite3ExprAddCollateToken(pParse, pExpr, &s, 0); in sqlite3ExprAddCollateString()
169 CollSeq *sqlite3ExprCollSeq(Parse *pParse, const Expr *pExpr){ in sqlite3ExprCollSeq() argument
170 sqlite3 *db = pParse->db; in sqlite3ExprCollSeq()
197 pColl = sqlite3GetCollSeq(pParse, ENC(db), 0, p->u.zToken); in sqlite3ExprCollSeq()
223 if( sqlite3CheckCollSeq(pParse, pColl) ){ in sqlite3ExprCollSeq()
239 CollSeq *sqlite3ExprNNCollSeq(Parse *pParse, const Expr *pExpr){ in sqlite3ExprNNCollSeq() argument
240 CollSeq *p = sqlite3ExprCollSeq(pParse, pExpr); in sqlite3ExprNNCollSeq()
241 if( p==0 ) p = pParse->db->pDfltColl; in sqlite3ExprNNCollSeq()
249 int sqlite3ExprCollSeqMatch(Parse *pParse, const Expr *pE1, const Expr *pE2){ in sqlite3ExprCollSeqMatch() argument
250 CollSeq *pColl1 = sqlite3ExprNNCollSeq(pParse, pE1); in sqlite3ExprCollSeqMatch()
251 CollSeq *pColl2 = sqlite3ExprNNCollSeq(pParse, pE2); in sqlite3ExprCollSeqMatch()
343 Parse *pParse, in sqlite3BinaryCompareCollSeq() argument
350 pColl = sqlite3ExprCollSeq(pParse, pLeft); in sqlite3BinaryCompareCollSeq()
352 pColl = sqlite3ExprCollSeq(pParse, pRight); in sqlite3BinaryCompareCollSeq()
354 pColl = sqlite3ExprCollSeq(pParse, pLeft); in sqlite3BinaryCompareCollSeq()
356 pColl = sqlite3ExprCollSeq(pParse, pRight); in sqlite3BinaryCompareCollSeq()
370 CollSeq *sqlite3ExprCompareCollSeq(Parse *pParse, const Expr *p){ in sqlite3ExprCompareCollSeq() argument
372 return sqlite3BinaryCompareCollSeq(pParse, p->pRight, p->pLeft); in sqlite3ExprCompareCollSeq()
374 return sqlite3BinaryCompareCollSeq(pParse, p->pLeft, p->pRight); in sqlite3ExprCompareCollSeq()
382 Parse *pParse, /* The parsing (and code generating) context */ in codeCompare() argument
395 if( pParse->nErr ) return 0; in codeCompare()
397 p4 = sqlite3BinaryCompareCollSeq(pParse, pRight, pLeft); in codeCompare()
399 p4 = sqlite3BinaryCompareCollSeq(pParse, pLeft, pRight); in codeCompare()
402 addr = sqlite3VdbeAddOp4(pParse->pVdbe, opcode, in2, dest, in1, in codeCompare()
404 sqlite3VdbeChangeP5(pParse->pVdbe, (u8)p5); in codeCompare()
493 Parse *pParse, /* Parsing context */ in sqlite3ExprForVectorField() argument
517 pRet = sqlite3PExpr(pParse, TK_SELECT_COLUMN, 0, 0); in sqlite3ExprForVectorField()
535 pRet = sqlite3ExprDup(pParse->db, pVector, 0); in sqlite3ExprForVectorField()
548 static int exprCodeSubselect(Parse *pParse, Expr *pExpr){ in exprCodeSubselect() argument
552 reg = sqlite3CodeSubselect(pParse, pExpr); in exprCodeSubselect()
577 Parse *pParse, /* Parse context */ in exprVectorRegister() argument
598 return sqlite3ExprCodeTemp(pParse, *ppExpr, pRegFree); in exprVectorRegister()
615 Parse *pParse, /* Code generator context */ in codeVectorCompare() argument
621 Vdbe *v = pParse->pVdbe; in codeVectorCompare()
630 int addrDone = sqlite3VdbeMakeLabel(pParse); in codeVectorCompare()
634 if( pParse->nErr ) return; in codeVectorCompare()
636 sqlite3ErrorMsg(pParse, "row value misused"); in codeVectorCompare()
653 regLeft = exprCodeSubselect(pParse, pLeft); in codeVectorCompare()
654 regRight = exprCodeSubselect(pParse, pRight); in codeVectorCompare()
663 r1 = exprVectorRegister(pParse, pLeft, i, regLeft, &pL, &regFree1); in codeVectorCompare()
664 r2 = exprVectorRegister(pParse, pRight, i, regRight, &pR, &regFree2); in codeVectorCompare()
666 codeCompare(pParse, pL, pR, opx, r1, r2, addrDone, p5, isCommuted); in codeVectorCompare()
673 sqlite3ReleaseTempReg(pParse, regFree1); in codeVectorCompare()
674 sqlite3ReleaseTempReg(pParse, regFree2); in codeVectorCompare()
709 int sqlite3ExprCheckHeight(Parse *pParse, int nHeight){ in sqlite3ExprCheckHeight() argument
711 int mxHeight = pParse->db->aLimit[SQLITE_LIMIT_EXPR_DEPTH]; in sqlite3ExprCheckHeight()
713 sqlite3ErrorMsg(pParse, in sqlite3ExprCheckHeight()
789 void sqlite3ExprSetHeightAndFlags(Parse *pParse, Expr *p){ in sqlite3ExprSetHeightAndFlags() argument
790 if( pParse->nErr ) return; in sqlite3ExprSetHeightAndFlags()
792 sqlite3ExprCheckHeight(pParse, p->nHeight); in sqlite3ExprSetHeightAndFlags()
809 void sqlite3ExprSetHeightAndFlags(Parse *pParse, Expr *p){ in sqlite3ExprSetHeightAndFlags() argument
810 if( pParse->nErr ) return; in sqlite3ExprSetHeightAndFlags()
945 Parse *pParse, /* Parsing context */ in sqlite3PExpr() argument
951 p = sqlite3DbMallocRawNN(pParse->db, sizeof(Expr)); in sqlite3PExpr()
956 sqlite3ExprAttachSubtrees(pParse->db, p, pLeft, pRight); in sqlite3PExpr()
957 sqlite3ExprCheckHeight(pParse, p->nHeight); in sqlite3PExpr()
959 sqlite3ExprDelete(pParse->db, pLeft); in sqlite3PExpr()
960 sqlite3ExprDelete(pParse->db, pRight); in sqlite3PExpr()
969 void sqlite3PExprAddSelect(Parse *pParse, Expr *pExpr, Select *pSelect){ in sqlite3PExprAddSelect() argument
973 sqlite3ExprSetHeightAndFlags(pParse, pExpr); in sqlite3PExprAddSelect()
975 assert( pParse->db->mallocFailed ); in sqlite3PExprAddSelect()
976 sqlite3SelectDelete(pParse->db, pSelect); in sqlite3PExprAddSelect()
999 Select *sqlite3ExprListToValues(Parse *pParse, int nElem, ExprList *pEList){ in sqlite3ExprListToValues() argument
1014 sqlite3ErrorMsg(pParse, "IN(...) element has %d term%s - expected %d", in sqlite3ExprListToValues()
1020 pSel = sqlite3SelectNew(pParse, pExpr->x.pList, 0, 0, 0, 0, 0, SF_Values,0); in sqlite3ExprListToValues()
1034 sqlite3ExprListDelete(pParse->db, pEList); in sqlite3ExprListToValues()
1046 Expr *sqlite3ExprAnd(Parse *pParse, Expr *pLeft, Expr *pRight){ in sqlite3ExprAnd() argument
1047 sqlite3 *db = pParse->db; in sqlite3ExprAnd()
1055 sqlite3ExprDeferredDelete(pParse, pLeft); in sqlite3ExprAnd()
1056 sqlite3ExprDeferredDelete(pParse, pRight); in sqlite3ExprAnd()
1059 return sqlite3PExpr(pParse, TK_AND, pLeft, pRight); in sqlite3ExprAnd()
1068 Parse *pParse, /* Parsing context */ in sqlite3ExprFunction() argument
1074 sqlite3 *db = pParse->db; in sqlite3ExprFunction()
1082 pNew->w.iOfst = (int)(pToken->z - pParse->zTail); in sqlite3ExprFunction()
1084 && pList->nExpr > pParse->db->aLimit[SQLITE_LIMIT_FUNCTION_ARG] in sqlite3ExprFunction()
1085 && !pParse->nested in sqlite3ExprFunction()
1087 sqlite3ErrorMsg(pParse, "too many arguments on function %T", pToken); in sqlite3ExprFunction()
1092 sqlite3ExprSetHeightAndFlags(pParse, pNew); in sqlite3ExprFunction()
1109 Parse *pParse, /* Parsing and code generating context */ in sqlite3ExprFunctionUsable() argument
1117 || (pParse->db->flags & SQLITE_TrustedSchema)==0 in sqlite3ExprFunctionUsable()
1126 sqlite3ErrorMsg(pParse, "unsafe use of %#T()", pExpr); in sqlite3ExprFunctionUsable()
1147 void sqlite3ExprAssignVarNumber(Parse *pParse, Expr *pExpr, u32 n){ in sqlite3ExprAssignVarNumber() argument
1148 sqlite3 *db = pParse->db; in sqlite3ExprAssignVarNumber()
1161 x = (ynVar)(++pParse->nVar); in sqlite3ExprAssignVarNumber()
1180 sqlite3ErrorMsg(pParse, "variable number must be between ?1 and ?%d", in sqlite3ExprAssignVarNumber()
1182 sqlite3RecordErrorOffsetOfExpr(pParse->db, pExpr); in sqlite3ExprAssignVarNumber()
1186 if( x>pParse->nVar ){ in sqlite3ExprAssignVarNumber()
1187 pParse->nVar = (int)x; in sqlite3ExprAssignVarNumber()
1189 }else if( sqlite3VListNumToName(pParse->pVList, x)==0 ){ in sqlite3ExprAssignVarNumber()
1197 x = (ynVar)sqlite3VListNameToNum(pParse->pVList, z, n); in sqlite3ExprAssignVarNumber()
1199 x = (ynVar)(++pParse->nVar); in sqlite3ExprAssignVarNumber()
1204 pParse->pVList = sqlite3VListAdd(db, pParse->pVList, z, n, x); in sqlite3ExprAssignVarNumber()
1209 sqlite3ErrorMsg(pParse, "too many SQL variables"); in sqlite3ExprAssignVarNumber()
1210 sqlite3RecordErrorOffsetOfExpr(pParse->db, pExpr); in sqlite3ExprAssignVarNumber()
1282 void sqlite3ExprDeferredDelete(Parse *pParse, Expr *pExpr){ in sqlite3ExprDeferredDelete() argument
1283 sqlite3ParserAddCleanup(pParse, in sqlite3ExprDeferredDelete()
1291 void sqlite3ExprUnmapAndDelete(Parse *pParse, Expr *p){ in sqlite3ExprUnmapAndDelete() argument
1294 sqlite3RenameExprUnmap(pParse, p); in sqlite3ExprUnmapAndDelete()
1296 sqlite3ExprDeleteNN(pParse->db, p); in sqlite3ExprUnmapAndDelete()
1573 w.pParse = 0; in gatherSelectWindows()
1833 Parse *pParse, /* Parsing context */ in sqlite3ExprListAppend() argument
1839 return sqlite3ExprListAppendNew(pParse->db,pExpr); in sqlite3ExprListAppend()
1842 return sqlite3ExprListAppendGrow(pParse->db,pList,pExpr); in sqlite3ExprListAppend()
1862 Parse *pParse, /* Parsing context */ in sqlite3ExprListAppendVector() argument
1867 sqlite3 *db = pParse->db; in sqlite3ExprListAppendVector()
1882 sqlite3ErrorMsg(pParse, "%d columns assigned %d values", in sqlite3ExprListAppendVector()
1888 Expr *pSubExpr = sqlite3ExprForVectorField(pParse, pExpr, i, pColumns->nId); in sqlite3ExprListAppendVector()
1891 pList = sqlite3ExprListAppend(pParse, pList, pSubExpr); in sqlite3ExprListAppendVector()
1915 sqlite3ExprUnmapAndDelete(pParse, pExpr); in sqlite3ExprListAppendVector()
1962 Parse *pParse, /* Parsing context */ in sqlite3ExprListSetName() argument
1967 assert( pList!=0 || pParse->db->mallocFailed!=0 ); in sqlite3ExprListSetName()
1968 assert( pParse->eParseMode!=PARSE_MODE_UNMAP || dequote==0 ); in sqlite3ExprListSetName()
1975 pItem->zEName = sqlite3DbStrNDup(pParse->db, pName->z, pName->n); in sqlite3ExprListSetName()
1982 sqlite3RenameTokenMap(pParse, (const void*)pItem->zEName, pName); in sqlite3ExprListSetName()
1997 Parse *pParse, /* Parsing context */ in sqlite3ExprListSetSpan() argument
2002 sqlite3 *db = pParse->db; in sqlite3ExprListSetSpan()
2019 Parse *pParse, in sqlite3ExprListCheckLength() argument
2023 int mx = pParse->db->aLimit[SQLITE_LIMIT_COLUMN]; in sqlite3ExprListCheckLength()
2027 sqlite3ErrorMsg(pParse, "too many columns in %s", zObject); in sqlite3ExprListCheckLength()
2352 CollSeq *pColl = sqlite3ExprNNCollSeq(pWalker->pParse, p); in exprNodeIsConstantOrGroupBy()
2387 int sqlite3ExprIsConstantOrGroupBy(Parse *pParse, Expr *p, ExprList *pGroupBy){ in sqlite3ExprIsConstantOrGroupBy() argument
2393 w.pParse = pParse; in sqlite3ExprIsConstantOrGroupBy()
2741 Parse *pParse, /* Parsing context */ in sqlite3FindInIndex() argument
2752 Vdbe *v = sqlite3GetVdbe(pParse); /* Virtual machine being coded */ in sqlite3FindInIndex()
2756 iTab = pParse->nTab++; in sqlite3FindInIndex()
2777 if( pParse->nErr==0 && (p = isCandidateForInOpt(pX))!=0 ){ in sqlite3FindInIndex()
2778 sqlite3 *db = pParse->db; /* Database connection */ in sqlite3FindInIndex()
2792 sqlite3CodeVerifySchema(pParse, iDb); in sqlite3FindInIndex()
2793 sqlite3TableLock(pParse, iDb, pTab->tnum, 0, pTab->zName); in sqlite3FindInIndex()
2801 sqlite3OpenTable(pParse, iTab, iDb, pTab, OP_OpenRead); in sqlite3FindInIndex()
2803 ExplainQueryPlan((pParse, 0, in sqlite3FindInIndex()
2861 CollSeq *pReq = sqlite3BinaryCompareCollSeq(pParse, pLhs, pRhs); in sqlite3FindInIndex()
2864 assert( pReq!=0 || pRhs->iColumn==XN_ROWID || pParse->nErr ); in sqlite3FindInIndex()
2884 ExplainQueryPlan((pParse, 0, in sqlite3FindInIndex()
2887 sqlite3VdbeSetP4KeyInfo(pParse, pIdx); in sqlite3FindInIndex()
2898 *prRhsHasNull = ++pParse->nMem; in sqlite3FindInIndex()
2922 pParse->nTab--; /* Back out the allocation of the unused cursor */ in sqlite3FindInIndex()
2931 u32 savedNQueryLoop = pParse->nQueryLoop; in sqlite3FindInIndex()
2935 pParse->nQueryLoop = 0; in sqlite3FindInIndex()
2937 *prRhsHasNull = rMayHaveNull = ++pParse->nMem; in sqlite3FindInIndex()
2940 sqlite3CodeRhsOfIN(pParse, pX, iTab); in sqlite3FindInIndex()
2944 pParse->nQueryLoop = savedNQueryLoop; in sqlite3FindInIndex()
2966 static char *exprINAffinity(Parse *pParse, const Expr *pExpr){ in exprINAffinity() argument
2973 zRet = sqlite3DbMallocRaw(pParse->db, nVal+1); in exprINAffinity()
2998 void sqlite3SubselectError(Parse *pParse, int nActual, int nExpect){ in sqlite3SubselectError() argument
2999 if( pParse->nErr==0 ){ in sqlite3SubselectError()
3001 sqlite3ErrorMsg(pParse, zFmt, nActual, nExpect); in sqlite3SubselectError()
3017 void sqlite3VectorErrorMsg(Parse *pParse, Expr *pExpr){ in sqlite3VectorErrorMsg() argument
3020 sqlite3SubselectError(pParse, pExpr->x.pSelect->pEList->nExpr, 1); in sqlite3VectorErrorMsg()
3024 sqlite3ErrorMsg(pParse, "row value misused"); in sqlite3VectorErrorMsg()
3052 Parse *pParse, /* Parsing context */ in sqlite3CodeRhsOfIN() argument
3063 v = pParse->pVdbe; in sqlite3CodeRhsOfIN()
3076 if( !ExprHasProperty(pExpr, EP_VarSelect) && pParse->iSelfTab==0 ){ in sqlite3CodeRhsOfIN()
3084 ExplainQueryPlan((pParse, 0, "REUSE LIST SUBQUERY %d", in sqlite3CodeRhsOfIN()
3100 pExpr->y.sub.regReturn = ++pParse->nMem; in sqlite3CodeRhsOfIN()
3123 pKeyInfo = sqlite3KeyInfoAlloc(pParse->db, nVal, 1); in sqlite3CodeRhsOfIN()
3134 ExplainQueryPlan((pParse, 1, "%sLIST SUBQUERY %d", in sqlite3CodeRhsOfIN()
3145 dest.zAffSdst = exprINAffinity(pParse, pExpr); in sqlite3CodeRhsOfIN()
3149 pCopy = sqlite3SelectDup(pParse->db, pSelect, 0); in sqlite3CodeRhsOfIN()
3150 rc = pParse->db->mallocFailed ? 1 :sqlite3Select(pParse, pCopy, &dest); in sqlite3CodeRhsOfIN()
3151 sqlite3SelectDelete(pParse->db, pCopy); in sqlite3CodeRhsOfIN()
3152 sqlite3DbFree(pParse->db, dest.zAffSdst); in sqlite3CodeRhsOfIN()
3164 pParse, p, pEList->a[i].pExpr in sqlite3CodeRhsOfIN()
3189 pKeyInfo->aColl[0] = sqlite3ExprCollSeq(pParse, pExpr->pLeft); in sqlite3CodeRhsOfIN()
3193 r1 = sqlite3GetTempReg(pParse); in sqlite3CodeRhsOfIN()
3194 r2 = sqlite3GetTempReg(pParse); in sqlite3CodeRhsOfIN()
3211 sqlite3ExprCode(pParse, pE2, r1); in sqlite3CodeRhsOfIN()
3215 sqlite3ReleaseTempReg(pParse, r1); in sqlite3CodeRhsOfIN()
3216 sqlite3ReleaseTempReg(pParse, r2); in sqlite3CodeRhsOfIN()
3227 || pParse->nErr ); in sqlite3CodeRhsOfIN()
3231 sqlite3ClearTempRegCache(pParse); in sqlite3CodeRhsOfIN()
3251 int sqlite3CodeSubselect(Parse *pParse, Expr *pExpr){ in sqlite3CodeSubselect() argument
3259 Vdbe *v = pParse->pVdbe; in sqlite3CodeSubselect()
3261 if( pParse->nErr ) return 0; in sqlite3CodeSubselect()
3271 ExplainQueryPlan((pParse, 0, "REUSE SUBQUERY %d", pSel->selId)); in sqlite3CodeSubselect()
3282 pExpr->y.sub.regReturn = ++pParse->nMem; in sqlite3CodeSubselect()
3310 ExplainQueryPlan((pParse, 1, "%sSCALAR SUBQUERY %d", in sqlite3CodeSubselect()
3313 sqlite3SelectDestInit(&dest, 0, pParse->nMem+1); in sqlite3CodeSubselect()
3314 pParse->nMem += nReg; in sqlite3CodeSubselect()
3329 sqlite3 *db = pParse->db; in sqlite3CodeSubselect()
3333 pLimit = sqlite3PExpr(pParse, TK_NE, in sqlite3CodeSubselect()
3336 sqlite3ExprDeferredDelete(pParse, pSel->pLimit->pLeft); in sqlite3CodeSubselect()
3340 pLimit = sqlite3Expr(pParse->db, TK_INTEGER, "1"); in sqlite3CodeSubselect()
3341 pSel->pLimit = sqlite3PExpr(pParse, TK_LIMIT, pLimit, 0); in sqlite3CodeSubselect()
3344 if( sqlite3Select(pParse, pSel, &dest) ){ in sqlite3CodeSubselect()
3358 || pParse->nErr ); in sqlite3CodeSubselect()
3362 sqlite3ClearTempRegCache(pParse); in sqlite3CodeSubselect()
3374 int sqlite3ExprCheckIN(Parse *pParse, Expr *pIn){ in sqlite3ExprCheckIN() argument
3376 if( ExprUseXSelect(pIn) && !pParse->db->mallocFailed ){ in sqlite3ExprCheckIN()
3378 sqlite3SubselectError(pParse, pIn->x.pSelect->pEList->nExpr, nVector); in sqlite3ExprCheckIN()
3382 sqlite3VectorErrorMsg(pParse, pIn->pLeft); in sqlite3ExprCheckIN()
3416 Parse *pParse, /* Parsing and code generating context */ in sqlite3ExprCodeIN() argument
3438 u8 okConstFactor = pParse->okConstFactor; in sqlite3ExprCodeIN()
3442 if( sqlite3ExprCheckIN(pParse, pExpr) ) return; in sqlite3ExprCodeIN()
3443 zAff = exprINAffinity(pParse, pExpr); in sqlite3ExprCodeIN()
3446 pParse->db, nVector*(sizeof(int) + sizeof(char)) + 1 in sqlite3ExprCodeIN()
3448 if( pParse->db->mallocFailed ) goto sqlite3ExprCodeIN_oom_error; in sqlite3ExprCodeIN()
3454 v = pParse->pVdbe; in sqlite3ExprCodeIN()
3457 eType = sqlite3FindInIndex(pParse, pExpr, in sqlite3ExprCodeIN()
3462 assert( pParse->nErr || nVector==1 || eType==IN_INDEX_EPH in sqlite3ExprCodeIN()
3487 assert( pParse->okConstFactor==okConstFactor ); in sqlite3ExprCodeIN()
3488 pParse->okConstFactor = 0; in sqlite3ExprCodeIN()
3489 rLhsOrig = exprCodeVector(pParse, pLeft, &iDummy); in sqlite3ExprCodeIN()
3490 pParse->okConstFactor = okConstFactor; in sqlite3ExprCodeIN()
3497 rLhs = sqlite3GetTempRange(pParse, nVector); in sqlite3ExprCodeIN()
3512 int labelOk = sqlite3VdbeMakeLabel(pParse); in sqlite3ExprCodeIN()
3518 pColl = sqlite3ExprCollSeq(pParse, pExpr->pLeft); in sqlite3ExprCodeIN()
3520 regCkNull = sqlite3GetTempReg(pParse); in sqlite3ExprCodeIN()
3524 r2 = sqlite3ExprCodeTemp(pParse, pList->a[ii].pExpr, &regToFree); in sqlite3ExprCodeIN()
3528 sqlite3ReleaseTempReg(pParse, regToFree); in sqlite3ExprCodeIN()
3553 sqlite3ReleaseTempReg(pParse, regCkNull); in sqlite3ExprCodeIN()
3564 destStep2 = destStep6 = sqlite3VdbeMakeLabel(pParse); in sqlite3ExprCodeIN()
3568 if( pParse->nErr ) goto sqlite3ExprCodeIN_oom_error; in sqlite3ExprCodeIN()
3623 destNotNull = sqlite3VdbeMakeLabel(pParse); in sqlite3ExprCodeIN()
3632 int r3 = sqlite3GetTempReg(pParse); in sqlite3ExprCodeIN()
3634 pColl = sqlite3ExprCollSeq(pParse, p); in sqlite3ExprCodeIN()
3639 sqlite3ReleaseTempReg(pParse, r3); in sqlite3ExprCodeIN()
3656 if( rLhs!=rLhsOrig ) sqlite3ReleaseTempReg(pParse, rLhs); in sqlite3ExprCodeIN()
3659 sqlite3DbFree(pParse->db, aiMap); in sqlite3ExprCodeIN()
3660 sqlite3DbFree(pParse->db, zAff); in sqlite3ExprCodeIN()
3691 static void codeInteger(Parse *pParse, Expr *pExpr, int negFlag, int iMem){ in codeInteger() argument
3692 Vdbe *v = pParse->pVdbe; in codeInteger()
3706 sqlite3ErrorMsg(pParse, "oversized integer: %s%#T", negFlag?"-":"",pExpr); in codeInteger()
3710 sqlite3ErrorMsg(pParse, "hex literal too big: %s%#T", in codeInteger()
3730 Parse *pParse, /* The parsing context */ in sqlite3ExprCodeLoadIndexColumn() argument
3740 pParse->iSelfTab = iTabCur + 1; in sqlite3ExprCodeLoadIndexColumn()
3741 sqlite3ExprCodeCopy(pParse, pIdx->aColExpr->a[iIdxCol].pExpr, regOut); in sqlite3ExprCodeLoadIndexColumn()
3742 pParse->iSelfTab = 0; in sqlite3ExprCodeLoadIndexColumn()
3744 sqlite3ExprCodeGetColumnOfTable(pParse->pVdbe, pIdx->pTable, iTabCur, in sqlite3ExprCodeLoadIndexColumn()
3755 Parse *pParse, /* Parsing context */ in sqlite3ExprCodeGeneratedColumn() argument
3761 Vdbe *v = pParse->pVdbe; in sqlite3ExprCodeGeneratedColumn()
3763 assert( pParse->iSelfTab!=0 ); in sqlite3ExprCodeGeneratedColumn()
3764 if( pParse->iSelfTab>0 ){ in sqlite3ExprCodeGeneratedColumn()
3765 iAddr = sqlite3VdbeAddOp3(v, OP_IfNullRow, pParse->iSelfTab-1, 0, regOut); in sqlite3ExprCodeGeneratedColumn()
3769 sqlite3ExprCodeCopy(pParse, sqlite3ColumnExpr(pTab,pCol), regOut); in sqlite3ExprCodeGeneratedColumn()
3801 Parse *pParse = sqlite3VdbeParser(v); in sqlite3ExprCodeGetColumnOfTable() local
3803 sqlite3ErrorMsg(pParse, "generated column loop on \"%s\"", in sqlite3ExprCodeGetColumnOfTable()
3806 int savedSelfTab = pParse->iSelfTab; in sqlite3ExprCodeGetColumnOfTable()
3808 pParse->iSelfTab = iTabCur+1; in sqlite3ExprCodeGetColumnOfTable()
3809 sqlite3ExprCodeGeneratedColumn(pParse, pTab, pCol, regOut); in sqlite3ExprCodeGetColumnOfTable()
3810 pParse->iSelfTab = savedSelfTab; in sqlite3ExprCodeGetColumnOfTable()
3837 Parse *pParse, /* Parsing and code generating context */ in sqlite3ExprCodeGetColumn() argument
3844 assert( pParse->pVdbe!=0 ); in sqlite3ExprCodeGetColumn()
3845 sqlite3ExprCodeGetColumnOfTable(pParse->pVdbe, pTab, iTable, iColumn, iReg); in sqlite3ExprCodeGetColumn()
3847 VdbeOp *pOp = sqlite3VdbeGetLastOp(pParse->pVdbe); in sqlite3ExprCodeGetColumn()
3857 void sqlite3ExprCodeMove(Parse *pParse, int iFrom, int iTo, int nReg){ in sqlite3ExprCodeMove() argument
3858 sqlite3VdbeAddOp3(pParse->pVdbe, OP_Move, iFrom, iTo, nReg); in sqlite3ExprCodeMove()
3885 static int exprCodeVector(Parse *pParse, Expr *p, int *piFreeable){ in exprCodeVector() argument
3889 iResult = sqlite3ExprCodeTemp(pParse, p, piFreeable); in exprCodeVector()
3896 iResult = sqlite3CodeSubselect(pParse, p); in exprCodeVector()
3900 iResult = pParse->nMem+1; in exprCodeVector()
3901 pParse->nMem += nResult; in exprCodeVector()
3904 sqlite3ExprCodeFactorable(pParse, p->x.pList->a[i].pExpr, i+iResult); in exprCodeVector()
3926 Parse *pParse, /* Parsing context */ in exprCodeInlineFunction() argument
3932 Vdbe *v = pParse->pVdbe; in exprCodeInlineFunction()
3943 int endCoalesce = sqlite3VdbeMakeLabel(pParse); in exprCodeInlineFunction()
3946 sqlite3ExprCode(pParse, pFarg->a[0].pExpr, target); in exprCodeInlineFunction()
3950 sqlite3ExprCode(pParse, pFarg->a[i].pExpr, target); in exprCodeInlineFunction()
3961 return sqlite3ExprCodeTarget(pParse, &caseExpr, target); in exprCodeInlineFunction()
3979 target = sqlite3ExprCodeTarget(pParse, pFarg->a[0].pExpr, target); in exprCodeInlineFunction()
4001 sqlite3ExprImpliesExpr(pParse,pFarg->a[0].pExpr, pFarg->a[1].pExpr,-1), in exprCodeInlineFunction()
4046 Parse *pParse, /* The parsing context */ in sqlite3IndexedExprLookup() argument
4052 for(p=pParse->pIdxExpr; p; p=p->pIENext){ in sqlite3IndexedExprLookup()
4055 if( pParse->iSelfTab ){ in sqlite3IndexedExprLookup()
4056 if( p->iDataCur!=pParse->iSelfTab-1 ) continue; in sqlite3IndexedExprLookup()
4060 v = pParse->pVdbe; in sqlite3IndexedExprLookup()
4072 p = pParse->pIdxExpr; in sqlite3IndexedExprLookup()
4073 pParse->pIdxExpr = 0; in sqlite3IndexedExprLookup()
4074 sqlite3ExprCode(pParse, pExpr, target); in sqlite3IndexedExprLookup()
4075 pParse->pIdxExpr = p; in sqlite3IndexedExprLookup()
4098 int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target){ in sqlite3ExprCodeTarget() argument
4099 Vdbe *v = pParse->pVdbe; /* The VM under construction */ in sqlite3ExprCodeTarget()
4108 assert( target>0 && target<=pParse->nMem ); in sqlite3ExprCodeTarget()
4114 }else if( pParse->pIdxExpr!=0 in sqlite3ExprCodeTarget()
4116 && (r1 = sqlite3IndexedExprLookup(pParse, pExpr, target))>=0 in sqlite3ExprCodeTarget()
4162 iReg = sqlite3ExprCodeTarget(pParse, pExpr->pLeft,target); in sqlite3ExprCodeTarget()
4176 if( pParse->iSelfTab<0 ){ in sqlite3ExprCodeTarget()
4193 return -1-pParse->iSelfTab; in sqlite3ExprCodeTarget()
4197 iSrc = sqlite3TableColumnToStorage(pTab, iCol) - pParse->iSelfTab; in sqlite3ExprCodeTarget()
4201 sqlite3ErrorMsg(pParse, "generated column loop on \"%s\"", in sqlite3ExprCodeTarget()
4207 sqlite3ExprCodeGeneratedColumn(pParse, pTab, pCol, iSrc); in sqlite3ExprCodeTarget()
4223 iTab = pParse->iSelfTab - 1; in sqlite3ExprCodeTarget()
4228 iReg = sqlite3ExprCodeGetColumn(pParse, pExpr->y.pTab, in sqlite3ExprCodeTarget()
4234 codeInteger(pParse, pExpr, 0, target); in sqlite3ExprCodeTarget()
4258 assert( op==TK_NULL || op==TK_ERROR || pParse->db->mallocFailed ); in sqlite3ExprCodeTarget()
4284 const char *z = sqlite3VListNumToName(pParse->pVList, pExpr->iColumn); in sqlite3ExprCodeTarget()
4286 pParse->pVList[0] = 0; /* Indicate VList may no longer be enlarged */ in sqlite3ExprCodeTarget()
4297 inReg = sqlite3ExprCodeTarget(pParse, pExpr->pLeft, target); in sqlite3ExprCodeTarget()
4321 codeVectorCompare(pParse, pExpr, target, op, p5); in sqlite3ExprCodeTarget()
4323 r1 = sqlite3ExprCodeTemp(pParse, pLeft, &regFree1); in sqlite3ExprCodeTarget()
4324 r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, &regFree2); in sqlite3ExprCodeTarget()
4326 codeCompare(pParse, pLeft, pExpr->pRight, op, r1, r2, in sqlite3ExprCodeTarget()
4368 r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, &regFree1); in sqlite3ExprCodeTarget()
4369 r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, &regFree2); in sqlite3ExprCodeTarget()
4379 codeInteger(pParse, pLeft, 1, target); in sqlite3ExprCodeTarget()
4392 r1 = sqlite3ExprCodeTemp(pParse, &tempX, &regFree1); in sqlite3ExprCodeTarget()
4393 r2 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, &regFree2); in sqlite3ExprCodeTarget()
4403 r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, &regFree1); in sqlite3ExprCodeTarget()
4411 r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, &regFree1); in sqlite3ExprCodeTarget()
4426 r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, &regFree1); in sqlite3ExprCodeTarget()
4442 sqlite3ErrorMsg(pParse, "misuse of aggregate: %#T()", pExpr); in sqlite3ExprCodeTarget()
4455 sqlite3 *db = pParse->db; /* The database connection */ in sqlite3ExprCodeTarget()
4465 if( ConstFactorOk(pParse) && sqlite3ExprIsConstantNotJoin(pExpr) ){ in sqlite3ExprCodeTarget()
4468 return sqlite3ExprCodeRunJustOnce(pParse, pExpr, -1); in sqlite3ExprCodeTarget()
4478 if( pDef==0 && pParse->explain ){ in sqlite3ExprCodeTarget()
4483 sqlite3ErrorMsg(pParse, "unknown function: %#T()", pExpr); in sqlite3ExprCodeTarget()
4489 return exprCodeInlineFunction(pParse, pFarg, in sqlite3ExprCodeTarget()
4492 sqlite3ExprFunctionUsable(pParse, pExpr, pDef); in sqlite3ExprCodeTarget()
4501 pColl = sqlite3ExprCollSeq(pParse, pFarg->a[i].pExpr); in sqlite3ExprCodeTarget()
4506 r1 = pParse->nMem+1; in sqlite3ExprCodeTarget()
4507 pParse->nMem += nFarg; in sqlite3ExprCodeTarget()
4509 r1 = sqlite3GetTempRange(pParse, nFarg); in sqlite3ExprCodeTarget()
4531 sqlite3ExprCodeExprList(pParse, pFarg, r1, 0, in sqlite3ExprCodeTarget()
4559 sqlite3VdbeAddFunctionCall(pParse, constMask, r1, target, nFarg, in sqlite3ExprCodeTarget()
4563 sqlite3ReleaseTempRange(pParse, r1, nFarg); in sqlite3ExprCodeTarget()
4565 sqlite3VdbeReleaseRegisters(pParse, r1, nFarg, constMask, 1); in sqlite3ExprCodeTarget()
4576 if( pParse->db->mallocFailed ){ in sqlite3ExprCodeTarget()
4582 sqlite3SubselectError(pParse, nCol, 1); in sqlite3ExprCodeTarget()
4584 return sqlite3CodeSubselect(pParse, pExpr); in sqlite3ExprCodeTarget()
4591 if( pLeft->iTable==0 || pParse->withinRJSubrtn > pLeft->op2 ){ in sqlite3ExprCodeTarget()
4592 pLeft->iTable = sqlite3CodeSubselect(pParse, pLeft); in sqlite3ExprCodeTarget()
4593 pLeft->op2 = pParse->withinRJSubrtn; in sqlite3ExprCodeTarget()
4598 sqlite3ErrorMsg(pParse, "%d columns assigned %d values", in sqlite3ExprCodeTarget()
4604 int destIfFalse = sqlite3VdbeMakeLabel(pParse); in sqlite3ExprCodeTarget()
4605 int destIfNull = sqlite3VdbeMakeLabel(pParse); in sqlite3ExprCodeTarget()
4607 sqlite3ExprCodeIN(pParse, pExpr, destIfFalse, destIfNull); in sqlite3ExprCodeTarget()
4629 exprCodeBetween(pParse, pExpr, target, 0, 0); in sqlite3ExprCodeTarget()
4637 inReg = sqlite3ExprCodeTarget(pParse, pExpr->pLeft, target); in sqlite3ExprCodeTarget()
4716 sqlite3ErrorMsg(pParse, "row value misused"); in sqlite3ExprCodeTarget()
4728 u8 okConstFactor = pParse->okConstFactor; in sqlite3ExprCodeTarget()
4749 pParse->okConstFactor = 0; in sqlite3ExprCodeTarget()
4750 inReg = sqlite3ExprCodeTarget(pParse, pExpr->pLeft, target); in sqlite3ExprCodeTarget()
4751 pParse->okConstFactor = okConstFactor; in sqlite3ExprCodeTarget()
4789 sqlite3 *db = pParse->db; in sqlite3ExprCodeTarget()
4796 endLabel = sqlite3VdbeMakeLabel(pParse); in sqlite3ExprCodeTarget()
4804 exprToRegister(pDel, exprCodeVector(pParse, pDel, &regFree1)); in sqlite3ExprCodeTarget()
4823 nextCase = sqlite3VdbeMakeLabel(pParse); in sqlite3ExprCodeTarget()
4825 sqlite3ExprIfFalse(pParse, pTest, nextCase, SQLITE_JUMPIFNULL); in sqlite3ExprCodeTarget()
4827 sqlite3ExprCode(pParse, aListelem[i+1].pExpr, target); in sqlite3ExprCodeTarget()
4832 sqlite3ExprCode(pParse, pEList->a[nExpr-1].pExpr, target); in sqlite3ExprCodeTarget()
4848 if( !pParse->pTriggerTab && !pParse->nested ){ in sqlite3ExprCodeTarget()
4849 sqlite3ErrorMsg(pParse, in sqlite3ExprCodeTarget()
4854 sqlite3MayAbort(pParse); in sqlite3ExprCodeTarget()
4862 sqlite3HaltConstraint(pParse, in sqlite3ExprCodeTarget()
4863 pParse->pTriggerTab ? SQLITE_CONSTRAINT_TRIGGER : SQLITE_ERROR, in sqlite3ExprCodeTarget()
4871 sqlite3ReleaseTempReg(pParse, regFree1); in sqlite3ExprCodeTarget()
4872 sqlite3ReleaseTempReg(pParse, regFree2); in sqlite3ExprCodeTarget()
4894 Parse *pParse, /* Parsing context */ in sqlite3ExprCodeRunJustOnce() argument
4899 assert( ConstFactorOk(pParse) ); in sqlite3ExprCodeRunJustOnce()
4900 p = pParse->pConstExpr; in sqlite3ExprCodeRunJustOnce()
4912 pExpr = sqlite3ExprDup(pParse->db, pExpr, 0); in sqlite3ExprCodeRunJustOnce()
4914 Vdbe *v = pParse->pVdbe; in sqlite3ExprCodeRunJustOnce()
4918 pParse->okConstFactor = 0; in sqlite3ExprCodeRunJustOnce()
4919 if( !pParse->db->mallocFailed ){ in sqlite3ExprCodeRunJustOnce()
4920 if( regDest<0 ) regDest = ++pParse->nMem; in sqlite3ExprCodeRunJustOnce()
4921 sqlite3ExprCode(pParse, pExpr, regDest); in sqlite3ExprCodeRunJustOnce()
4923 pParse->okConstFactor = 1; in sqlite3ExprCodeRunJustOnce()
4924 sqlite3ExprDelete(pParse->db, pExpr); in sqlite3ExprCodeRunJustOnce()
4927 p = sqlite3ExprListAppend(pParse, p, pExpr); in sqlite3ExprCodeRunJustOnce()
4931 if( regDest<0 ) regDest = ++pParse->nMem; in sqlite3ExprCodeRunJustOnce()
4934 pParse->pConstExpr = p; in sqlite3ExprCodeRunJustOnce()
4952 int sqlite3ExprCodeTemp(Parse *pParse, Expr *pExpr, int *pReg){ in sqlite3ExprCodeTemp() argument
4955 if( ConstFactorOk(pParse) in sqlite3ExprCodeTemp()
4961 r2 = sqlite3ExprCodeRunJustOnce(pParse, pExpr, -1); in sqlite3ExprCodeTemp()
4963 int r1 = sqlite3GetTempReg(pParse); in sqlite3ExprCodeTemp()
4964 r2 = sqlite3ExprCodeTarget(pParse, pExpr, r1); in sqlite3ExprCodeTemp()
4968 sqlite3ReleaseTempReg(pParse, r1); in sqlite3ExprCodeTemp()
4980 void sqlite3ExprCode(Parse *pParse, Expr *pExpr, int target){ in sqlite3ExprCode() argument
4984 assert( target>0 && target<=pParse->nMem ); in sqlite3ExprCode()
4985 assert( pParse->pVdbe!=0 || pParse->db->mallocFailed ); in sqlite3ExprCode()
4986 if( pParse->pVdbe==0 ) return; in sqlite3ExprCode()
4987 inReg = sqlite3ExprCodeTarget(pParse, pExpr, target); in sqlite3ExprCode()
4995 sqlite3VdbeAddOp2(pParse->pVdbe, op, inReg, target); in sqlite3ExprCode()
5004 void sqlite3ExprCodeCopy(Parse *pParse, Expr *pExpr, int target){ in sqlite3ExprCodeCopy() argument
5005 sqlite3 *db = pParse->db; in sqlite3ExprCodeCopy()
5007 if( !db->mallocFailed ) sqlite3ExprCode(pParse, pExpr, target); in sqlite3ExprCodeCopy()
5017 void sqlite3ExprCodeFactorable(Parse *pParse, Expr *pExpr, int target){ in sqlite3ExprCodeFactorable() argument
5018 if( pParse->okConstFactor && sqlite3ExprIsConstantNotJoin(pExpr) ){ in sqlite3ExprCodeFactorable()
5019 sqlite3ExprCodeRunJustOnce(pParse, pExpr, target); in sqlite3ExprCodeFactorable()
5021 sqlite3ExprCodeCopy(pParse, pExpr, target); in sqlite3ExprCodeFactorable()
5046 Parse *pParse, /* Parsing context */ in sqlite3ExprCodeExprList() argument
5055 Vdbe *v = pParse->pVdbe; in sqlite3ExprCodeExprList()
5058 assert( pParse->pVdbe!=0 ); /* Never gets this far otherwise */ in sqlite3ExprCodeExprList()
5060 if( !ConstFactorOk(pParse) ) flags &= ~SQLITE_ECEL_FACTOR; in sqlite3ExprCodeExprList()
5079 sqlite3ExprCodeRunJustOnce(pParse, pExpr, target+i); in sqlite3ExprCodeExprList()
5081 int inReg = sqlite3ExprCodeTarget(pParse, pExpr, target+i); in sqlite3ExprCodeExprList()
5121 Parse *pParse, /* Parsing and code generating context */ in exprCodeBetween() argument
5132 sqlite3 *db = pParse->db; in exprCodeBetween()
5150 exprToRegister(pDel, exprCodeVector(pParse, pDel, &regFree1)); in exprCodeBetween()
5152 xJump(pParse, &exprAnd, dest, jumpIfNull); in exprCodeBetween()
5160 sqlite3ExprCodeTarget(pParse, &exprAnd, dest); in exprCodeBetween()
5162 sqlite3ReleaseTempReg(pParse, regFree1); in exprCodeBetween()
5192 void sqlite3ExprIfTrue(Parse *pParse, Expr *pExpr, int dest, int jumpIfNull){ in sqlite3ExprIfTrue() argument
5193 Vdbe *v = pParse->pVdbe; in sqlite3ExprIfTrue()
5209 sqlite3ExprIfTrue(pParse, pAlt, dest, jumpIfNull); in sqlite3ExprIfTrue()
5211 int d2 = sqlite3VdbeMakeLabel(pParse); in sqlite3ExprIfTrue()
5213 sqlite3ExprIfFalse(pParse, pExpr->pLeft, d2, in sqlite3ExprIfTrue()
5215 sqlite3ExprIfTrue(pParse, pExpr->pRight, dest, jumpIfNull); in sqlite3ExprIfTrue()
5219 sqlite3ExprIfTrue(pParse, pExpr->pLeft, dest, jumpIfNull); in sqlite3ExprIfTrue()
5220 sqlite3ExprIfTrue(pParse, pExpr->pRight, dest, jumpIfNull); in sqlite3ExprIfTrue()
5226 sqlite3ExprIfFalse(pParse, pExpr->pLeft, dest, jumpIfNull); in sqlite3ExprIfTrue()
5238 sqlite3ExprIfTrue(pParse, pExpr->pLeft, dest, in sqlite3ExprIfTrue()
5241 sqlite3ExprIfFalse(pParse, pExpr->pLeft, dest, in sqlite3ExprIfTrue()
5261 r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, &regFree1); in sqlite3ExprIfTrue()
5262 r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, &regFree2); in sqlite3ExprIfTrue()
5263 codeCompare(pParse, pExpr->pLeft, pExpr->pRight, op, in sqlite3ExprIfTrue()
5283 r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, &regFree1); in sqlite3ExprIfTrue()
5293 exprCodeBetween(pParse, pExpr, dest, sqlite3ExprIfTrue, jumpIfNull); in sqlite3ExprIfTrue()
5298 int destIfFalse = sqlite3VdbeMakeLabel(pParse); in sqlite3ExprIfTrue()
5300 sqlite3ExprCodeIN(pParse, pExpr, destIfFalse, destIfNull); in sqlite3ExprIfTrue()
5313 r1 = sqlite3ExprCodeTemp(pParse, pExpr, &regFree1); in sqlite3ExprIfTrue()
5322 sqlite3ReleaseTempReg(pParse, regFree1); in sqlite3ExprIfTrue()
5323 sqlite3ReleaseTempReg(pParse, regFree2); in sqlite3ExprIfTrue()
5335 void sqlite3ExprIfFalse(Parse *pParse, Expr *pExpr, int dest, int jumpIfNull){ in sqlite3ExprIfFalse() argument
5336 Vdbe *v = pParse->pVdbe; in sqlite3ExprIfFalse()
5383 sqlite3ExprIfFalse(pParse, pAlt, dest, jumpIfNull); in sqlite3ExprIfFalse()
5386 sqlite3ExprIfFalse(pParse, pExpr->pLeft, dest, jumpIfNull); in sqlite3ExprIfFalse()
5387 sqlite3ExprIfFalse(pParse, pExpr->pRight, dest, jumpIfNull); in sqlite3ExprIfFalse()
5389 int d2 = sqlite3VdbeMakeLabel(pParse); in sqlite3ExprIfFalse()
5391 sqlite3ExprIfTrue(pParse, pExpr->pLeft, d2, in sqlite3ExprIfFalse()
5393 sqlite3ExprIfFalse(pParse, pExpr->pRight, dest, jumpIfNull); in sqlite3ExprIfFalse()
5400 sqlite3ExprIfTrue(pParse, pExpr->pLeft, dest, jumpIfNull); in sqlite3ExprIfFalse()
5413 sqlite3ExprIfFalse(pParse, pExpr->pLeft, dest, in sqlite3ExprIfFalse()
5418 sqlite3ExprIfTrue(pParse, pExpr->pLeft, dest, in sqlite3ExprIfFalse()
5438 r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, &regFree1); in sqlite3ExprIfFalse()
5439 r2 = sqlite3ExprCodeTemp(pParse, pExpr->pRight, &regFree2); in sqlite3ExprIfFalse()
5440 codeCompare(pParse, pExpr->pLeft, pExpr->pRight, op, in sqlite3ExprIfFalse()
5458 r1 = sqlite3ExprCodeTemp(pParse, pExpr->pLeft, &regFree1); in sqlite3ExprIfFalse()
5468 exprCodeBetween(pParse, pExpr, dest, sqlite3ExprIfFalse, jumpIfNull); in sqlite3ExprIfFalse()
5474 sqlite3ExprCodeIN(pParse, pExpr, dest, dest); in sqlite3ExprIfFalse()
5476 int destIfNull = sqlite3VdbeMakeLabel(pParse); in sqlite3ExprIfFalse()
5477 sqlite3ExprCodeIN(pParse, pExpr, dest, destIfNull); in sqlite3ExprIfFalse()
5490 r1 = sqlite3ExprCodeTemp(pParse, pExpr, &regFree1); in sqlite3ExprIfFalse()
5499 sqlite3ReleaseTempReg(pParse, regFree1); in sqlite3ExprIfFalse()
5500 sqlite3ReleaseTempReg(pParse, regFree2); in sqlite3ExprIfFalse()
5508 void sqlite3ExprIfFalseDup(Parse *pParse, Expr *pExpr, int dest,int jumpIfNull){ in sqlite3ExprIfFalseDup() argument
5509 sqlite3 *db = pParse->db; in sqlite3ExprIfFalseDup()
5512 sqlite3ExprIfFalse(pParse, pCopy, dest, jumpIfNull); in sqlite3ExprIfFalseDup()
5531 const Parse *pParse, in exprCompareVariable() argument
5539 sqlite3ValueFromExpr(pParse->db, pExpr, SQLITE_UTF8, SQLITE_AFF_BLOB, &pR); in exprCompareVariable()
5542 sqlite3VdbeSetVarmask(pParse->pVdbe, iVar); in exprCompareVariable()
5543 pL = sqlite3VdbeGetBoundValue(pParse->pReprepare, iVar, SQLITE_AFF_BLOB); in exprCompareVariable()
5587 const Parse *pParse, in sqlite3ExprCompare() argument
5596 if( pParse && pA->op==TK_VARIABLE && exprCompareVariable(pParse, pA, pB) ){ in sqlite3ExprCompare()
5607 if( pA->op==TK_COLLATE && sqlite3ExprCompare(pParse, pA->pLeft,pB,iTab)<2 ){ in sqlite3ExprCompare()
5610 if( pB->op==TK_COLLATE && sqlite3ExprCompare(pParse, pA,pB->pLeft,iTab)<2 ){ in sqlite3ExprCompare()
5632 if( sqlite3WindowCompare(pParse, pA->y.pWin, pB->y.pWin, 1)!=0 ){ in sqlite3ExprCompare()
5655 && sqlite3ExprCompare(pParse, pA->pLeft, pB->pLeft, iTab) ) return 2; in sqlite3ExprCompare()
5656 if( sqlite3ExprCompare(pParse, pA->pRight, pB->pRight, iTab) ) return 2; in sqlite3ExprCompare()
5721 const Parse *pParse,/* Parsing context */ in exprImpliesNotNull() argument
5729 if( sqlite3ExprCompare(pParse, p, pNN, iTab)==0 ){ in exprImpliesNotNull()
5736 return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, 1); in exprImpliesNotNull()
5745 if( exprImpliesNotNull(pParse, pList->a[0].pExpr, pNN, iTab, 1) in exprImpliesNotNull()
5746 || exprImpliesNotNull(pParse, pList->a[1].pExpr, pNN, iTab, 1) in exprImpliesNotNull()
5750 return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, 1); in exprImpliesNotNull()
5770 if( exprImpliesNotNull(pParse, p->pRight, pNN, iTab, seenNot) ) return 1; in exprImpliesNotNull()
5777 return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, seenNot); in exprImpliesNotNull()
5782 return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, 1); in exprImpliesNotNull()
5786 return exprImpliesNotNull(pParse, p->pLeft, pNN, iTab, 1); in exprImpliesNotNull()
5818 const Parse *pParse, in sqlite3ExprImpliesExpr() argument
5823 if( sqlite3ExprCompare(pParse, pE1, pE2, iTab)==0 ){ in sqlite3ExprImpliesExpr()
5827 && (sqlite3ExprImpliesExpr(pParse, pE1, pE2->pLeft, iTab) in sqlite3ExprImpliesExpr()
5828 || sqlite3ExprImpliesExpr(pParse, pE1, pE2->pRight, iTab) ) in sqlite3ExprImpliesExpr()
5833 && exprImpliesNotNull(pParse, pE1, pE2->pLeft, iTab, 0) in sqlite3ExprImpliesExpr()
6126 int sqlite3ReferencesSrcList(Parse *pParse, Expr *pExpr, SrcList *pSrcList){ in sqlite3ReferencesSrcList() argument
6129 assert( pParse->db!=0 ); in sqlite3ReferencesSrcList()
6136 x.db = pParse->db; in sqlite3ReferencesSrcList()
6146 if( x.aiExclude ) sqlite3DbNNFreeNN(pParse->db, x.aiExclude); in sqlite3ReferencesSrcList()
6175 Parse *pParse = pWalker->pParse; in agginfoPersistExprCb() local
6176 sqlite3 *db = pParse->db; in agginfoPersistExprCb()
6184 sqlite3ExprDeferredDelete(pParse, pExpr); in agginfoPersistExprCb()
6194 sqlite3ExprDeferredDelete(pParse, pExpr); in agginfoPersistExprCb()
6206 void sqlite3AggInfoPersistWalkerInit(Walker *pWalker, Parse *pParse){ in sqlite3AggInfoPersistWalkerInit() argument
6208 pWalker->pParse = pParse; in sqlite3AggInfoPersistWalkerInit()
6253 Parse *pParse = pNC->pParse; in analyzeAggregate() local
6290 && (k = addAggInfoColumn(pParse->db, pAggInfo))>=0 in analyzeAggregate()
6297 pCol->iMem = ++pParse->nMem; in analyzeAggregate()
6354 u8 enc = ENC(pParse->db); in analyzeAggregate()
6355 i = addAggInfoFunc(pParse->db, pAggInfo); in analyzeAggregate()
6360 pItem->iMem = ++pParse->nMem; in analyzeAggregate()
6362 pItem->pFunc = sqlite3FindFunction(pParse->db, in analyzeAggregate()
6366 pItem->iDistinct = pParse->nTab++; in analyzeAggregate()
6403 w.pParse = 0; in sqlite3ExprAnalyzeAggregates()
6427 int sqlite3GetTempReg(Parse *pParse){ in sqlite3GetTempReg() argument
6428 if( pParse->nTempReg==0 ){ in sqlite3GetTempReg()
6429 return ++pParse->nMem; in sqlite3GetTempReg()
6431 return pParse->aTempReg[--pParse->nTempReg]; in sqlite3GetTempReg()
6438 void sqlite3ReleaseTempReg(Parse *pParse, int iReg){ in sqlite3ReleaseTempReg() argument
6440 sqlite3VdbeReleaseRegisters(pParse, iReg, 1, 0, 0); in sqlite3ReleaseTempReg()
6441 if( pParse->nTempReg<ArraySize(pParse->aTempReg) ){ in sqlite3ReleaseTempReg()
6442 pParse->aTempReg[pParse->nTempReg++] = iReg; in sqlite3ReleaseTempReg()
6450 int sqlite3GetTempRange(Parse *pParse, int nReg){ in sqlite3GetTempRange() argument
6452 if( nReg==1 ) return sqlite3GetTempReg(pParse); in sqlite3GetTempRange()
6453 i = pParse->iRangeReg; in sqlite3GetTempRange()
6454 n = pParse->nRangeReg; in sqlite3GetTempRange()
6456 pParse->iRangeReg += nReg; in sqlite3GetTempRange()
6457 pParse->nRangeReg -= nReg; in sqlite3GetTempRange()
6459 i = pParse->nMem+1; in sqlite3GetTempRange()
6460 pParse->nMem += nReg; in sqlite3GetTempRange()
6464 void sqlite3ReleaseTempRange(Parse *pParse, int iReg, int nReg){ in sqlite3ReleaseTempRange() argument
6466 sqlite3ReleaseTempReg(pParse, iReg); in sqlite3ReleaseTempRange()
6469 sqlite3VdbeReleaseRegisters(pParse, iReg, nReg, 0, 0); in sqlite3ReleaseTempRange()
6470 if( nReg>pParse->nRangeReg ){ in sqlite3ReleaseTempRange()
6471 pParse->nRangeReg = nReg; in sqlite3ReleaseTempRange()
6472 pParse->iRangeReg = iReg; in sqlite3ReleaseTempRange()
6484 void sqlite3ClearTempRegCache(Parse *pParse){ in sqlite3ClearTempRegCache() argument
6485 pParse->nTempReg = 0; in sqlite3ClearTempRegCache()
6486 pParse->nRangeReg = 0; in sqlite3ClearTempRegCache()
6495 int sqlite3NoTempsInRange(Parse *pParse, int iFirst, int iLast){ in sqlite3NoTempsInRange() argument
6497 if( pParse->nRangeReg>0 in sqlite3NoTempsInRange()
6498 && pParse->iRangeReg+pParse->nRangeReg > iFirst in sqlite3NoTempsInRange()
6499 && pParse->iRangeReg <= iLast in sqlite3NoTempsInRange()
6503 for(i=0; i<pParse->nTempReg; i++){ in sqlite3NoTempsInRange()
6504 if( pParse->aTempReg[i]>=iFirst && pParse->aTempReg[i]<=iLast ){ in sqlite3NoTempsInRange()