Lines Matching defs:pParse

51   Parse *pParse,        /* Parsing context */
64 sqlite3 *db = pParse->db;
72 pEList = sqlite3ExprListAppend(pParse, 0, sqlite3Expr(db,TK_ALL,0));
121 ** a join type, but put an error in the pParse structure.
123 int sqlite3JoinType(Parse *pParse, Token *pA, Token *pB, Token *pC){
168 sqlite3ErrorMsg(pParse, "unknown or unsupported join type: "
173 sqlite3ErrorMsg(pParse,
237 Parse *pParse, /* Parsing context */
246 sqlite3 *db = pParse->db;
259 pEq = sqlite3PExpr(pParse, TK_EQ, pE1, pE2, 0);
320 static int sqliteProcessJoin(Parse *pParse, Select *p){
342 sqlite3ErrorMsg(pParse, "a NATURAL join may not have "
353 addWhereTerm(pParse, pSrc, iLeft, iLeftCol, i+1, j,
362 sqlite3ErrorMsg(pParse, "cannot have both ON and USING "
372 p->pWhere = sqlite3ExprAnd(pParse->db, p->pWhere, pRight->pOn);
396 sqlite3ErrorMsg(pParse, "cannot join using column %s - column "
400 addWhereTerm(pParse, pSrc, iLeft, iLeftCol, i+1, iRightCol,
413 Parse *pParse, /* Parser context */
418 Vdbe *v = pParse->pVdbe;
420 int regBase = sqlite3GetTempRange(pParse, nExpr+2);
421 int regRecord = sqlite3GetTempReg(pParse);
422 sqlite3ExprCacheClear(pParse);
423 sqlite3ExprCodeExprList(pParse, pOrderBy, regBase, 0);
425 sqlite3ExprCodeMove(pParse, regData, regBase+nExpr+1, 1);
428 sqlite3ReleaseTempReg(pParse, regRecord);
429 sqlite3ReleaseTempRange(pParse, regBase, nExpr+2);
476 Parse *pParse, /* Parsing and code generating context */
485 v = pParse->pVdbe;
486 r1 = sqlite3GetTempReg(pParse);
490 sqlite3ReleaseTempReg(pParse, r1);
502 Parse *pParse, /* Parse context. */
508 sqlite3ErrorMsg(pParse, "only a single result allowed for "
527 Parse *pParse, /* The parser context */
538 Vdbe *v = pParse->pVdbe;
562 pDest->iMem = pParse->nMem+1;
564 pParse->nMem += nResultCol;
577 sqlite3ExprCacheClear(pParse);
578 sqlite3ExprCodeExprList(pParse, pEList, regResult, eDest==SRT_Output);
589 codeDistinct(pParse, distinct, iContinue, nColumn, regResult);
602 r1 = sqlite3GetTempReg(pParse);
605 sqlite3ReleaseTempReg(pParse, r1);
623 int r1 = sqlite3GetTempReg(pParse);
628 pushOntoSorter(pParse, pOrderBy, p, r1);
630 int r2 = sqlite3GetTempReg(pParse);
634 sqlite3ReleaseTempReg(pParse, r2);
636 sqlite3ReleaseTempReg(pParse, r1);
653 pushOntoSorter(pParse, pOrderBy, p, regResult);
655 int r1 = sqlite3GetTempReg(pParse);
657 sqlite3ExprCacheAffinityChange(pParse, regResult, 1);
659 sqlite3ReleaseTempReg(pParse, r1);
679 pushOntoSorter(pParse, pOrderBy, p, regResult);
681 sqlite3ExprCodeMove(pParse, regResult, iParm, 1);
697 int r1 = sqlite3GetTempReg(pParse);
699 pushOntoSorter(pParse, pOrderBy, p, r1);
700 sqlite3ReleaseTempReg(pParse, r1);
705 sqlite3ExprCacheAffinityChange(pParse, regResult, nColumn);
747 static KeyInfo *keyInfoFromExprList(Parse *pParse, ExprList *pList){
748 sqlite3 *db = pParse->db;
763 pColl = sqlite3ExprCollSeq(pParse, pItem->pExpr);
801 static void explainTempTable(Parse *pParse, const char *zUsage){
802 if( pParse->explain==2 ){
803 Vdbe *v = pParse->pVdbe;
804 char *zMsg = sqlite3MPrintf(pParse->db, "USE TEMP B-TREE FOR %s", zUsage);
805 sqlite3VdbeAddOp4(v, OP_Explain, pParse->iSelectId, 0, 0, zMsg, P4_DYNAMIC);
840 Parse *pParse, /* Parse context */
847 if( pParse->explain==2 ){
848 Vdbe *v = pParse->pVdbe;
850 pParse->db, "COMPOUND SUBQUERIES %d AND %d %s(%s)", iSub1, iSub2,
853 sqlite3VdbeAddOp4(v, OP_Explain, pParse->iSelectId, 0, 0, zMsg, P4_DYNAMIC);
868 Parse *pParse, /* Parsing context */
888 regRow = sqlite3GetTempReg(pParse);
890 pseudoTab = pParse->nTab++;
894 regRowid = sqlite3GetTempReg(pParse);
913 sqlite3ExprCacheAffinityChange(pParse, regRow, 1);
919 sqlite3ExprCodeMove(pParse, regRow, iParm, 1);
938 sqlite3ExprCacheAffinityChange(pParse, pDest->iMem, nColumn);
945 sqlite3ReleaseTempReg(pParse, regRow);
946 sqlite3ReleaseTempReg(pParse, regRowid);
1049 sNC.pParse = pNC->pParse;
1065 if( pNC->pParse ){
1066 int iDb = sqlite3SchemaToIndex(pNC->pParse->db, pTab->pSchema);
1067 zOriginDb = pNC->pParse->db->aDb[iDb].zName;
1084 sNC.pParse = pNC->pParse;
1105 Parse *pParse, /* Parser context */
1110 Vdbe *v = pParse->pVdbe;
1114 sNC.pParse = pParse;
1145 Parse *pParse, /* Parser context */
1149 Vdbe *v = pParse->pVdbe;
1151 sqlite3 *db = pParse->db;
1156 if( pParse->explain ){
1161 if( pParse->colNamesSet || NEVER(v==0) || db->mallocFailed ) return;
1162 pParse->colNamesSet = 1;
1204 generateColumnTypes(pParse, pTabList, pEList);
1221 Parse *pParse, /* Parsing context */
1226 sqlite3 *db = pParse->db; /* Database connection */
1312 Parse *pParse, /* Parsing contexts */
1317 sqlite3 *db = pParse->db;
1337 pColl = sqlite3ExprCollSeq(pParse, p);
1348 Table *sqlite3ResultSetOfSelect(Parse *pParse, Select *pSelect){
1350 sqlite3 *db = pParse->db;
1356 sqlite3SelectPrep(pParse, pSelect, 0);
1357 if( pParse->nErr ) return 0;
1370 selectColumnsFromExprList(pParse, pSelect->pEList, &pTab->nCol, &pTab->aCol);
1371 selectAddColumnTypeAndCollation(pParse, pTab->nCol, pTab->aCol, pSelect);
1382 ** If an error occurs, return NULL and leave a message in pParse.
1384 Vdbe *sqlite3GetVdbe(Parse *pParse){
1385 Vdbe *v = pParse->pVdbe;
1387 v = pParse->pVdbe = sqlite3VdbeCreate(pParse->db);
1416 static void computeLimitRegisters(Parse *pParse, Select *p, int iBreak){
1429 sqlite3ExprCacheClear(pParse);
1432 p->iLimit = iLimit = ++pParse->nMem;
1433 v = sqlite3GetVdbe(pParse);
1444 sqlite3ExprCode(pParse, p->pLimit, iLimit);
1450 p->iOffset = iOffset = ++pParse->nMem;
1451 pParse->nMem++; /* Allocate an extra register for limit+offset */
1452 sqlite3ExprCode(pParse, p->pOffset, iOffset);
1476 static CollSeq *multiSelectCollSeq(Parse *pParse, Select *p, int iCol){
1479 pRet = multiSelectCollSeq(pParse, p->pPrior, iCol);
1485 pRet = sqlite3ExprCollSeq(pParse, p->pEList->a[iCol].pExpr);
1493 Parse *pParse, /* Parsing context */
1532 Parse *pParse, /* Parsing context */
1551 db = pParse->db;
1557 sqlite3ErrorMsg(pParse,"ORDER BY clause should come after %s not before",
1563 sqlite3ErrorMsg(pParse,"LIMIT clause should come after %s not before",
1569 v = sqlite3GetVdbe(pParse);
1586 sqlite3ErrorMsg(pParse, "SELECTs to the left and right of %s"
1595 return multiSelectOrderBy(pParse, p, pDest);
1607 explainSetInteger(iSub1, pParse->iNextSelectId);
1608 rc = sqlite3Select(pParse, pPrior, &dest);
1621 explainSetInteger(iSub2, pParse->iNextSelectId);
1622 rc = sqlite3Select(pParse, p, &dest);
1663 unionTab = pParse->nTab++;
1676 explainSetInteger(iSub1, pParse->iNextSelectId);
1677 rc = sqlite3Select(pParse, pPrior, &uniondest);
1696 explainSetInteger(iSub2, pParse->iNextSelectId);
1697 rc = sqlite3Select(pParse, p, &uniondest);
1722 generateColumnNames(pParse, 0, pFirst->pEList);
1726 computeLimitRegisters(pParse, p, iBreak);
1729 selectInnerLoop(pParse, p, p->pEList, unionTab, p->pEList->nExpr,
1750 tab1 = pParse->nTab++;
1751 tab2 = pParse->nTab++;
1763 explainSetInteger(iSub1, pParse->iNextSelectId);
1764 rc = sqlite3Select(pParse, pPrior, &intersectdest);
1780 explainSetInteger(iSub2, pParse->iNextSelectId);
1781 rc = sqlite3Select(pParse, p, &intersectdest);
1797 generateColumnNames(pParse, 0, pFirst->pEList);
1801 computeLimitRegisters(pParse, p, iBreak);
1803 r1 = sqlite3GetTempReg(pParse);
1806 sqlite3ReleaseTempReg(pParse, r1);
1807 selectInnerLoop(pParse, p, p->pEList, tab1, p->pEList->nExpr,
1818 explainComposite(pParse, p->op, iSub1, iSub2, p->op!=TK_ALL);
1849 *apColl = multiSelectCollSeq(pParse, p, i);
1901 Parse *pParse, /* Parsing context */
1911 Vdbe *v = pParse->pVdbe;
1927 sqlite3ExprCodeCopy(pParse, pIn->iMem, regPrev+1, pIn->nMem);
1930 if( pParse->db->mallocFailed ) return 0;
1941 int r1 = sqlite3GetTempReg(pParse);
1942 int r2 = sqlite3GetTempReg(pParse);
1949 sqlite3ReleaseTempReg(pParse, r2);
1950 sqlite3ReleaseTempReg(pParse, r1);
1964 r1 = sqlite3GetTempReg(pParse);
1966 sqlite3ExprCacheAffinityChange(pParse, pIn->iMem, 1);
1968 sqlite3ReleaseTempReg(pParse, r1);
1988 sqlite3ExprCodeMove(pParse, pIn->iMem, pDest->iParm, 1);
1999 pDest->iMem = sqlite3GetTempRange(pParse, pIn->nMem);
2002 sqlite3ExprCodeMove(pParse, pIn->iMem, pDest->iMem, pDest->nMem);
2018 sqlite3ExprCacheAffinityChange(pParse, pIn->iMem, pIn->nMem);
2124 Parse *pParse, /* Parsing context */
2170 db = pParse->db;
2171 v = pParse->pVdbe;
2202 pOrderBy = sqlite3ExprListAppend(pParse, pOrderBy, pNew);
2234 pColl = multiSelectCollSeq(pParse, p, aPermute[i]);
2249 pPrior->pOrderBy = sqlite3ExprListDup(pParse->db, pOrderBy, 0);
2260 regPrev = sqlite3GetTempRange(pParse, nExpr+1);
2269 pKeyDup->aColl[i] = multiSelectCollSeq(pParse, p, i);
2278 sqlite3ResolveOrderGroupBy(pParse, p, p->pOrderBy, "ORDER");
2280 sqlite3ResolveOrderGroupBy(pParse, pPrior, pPrior->pOrderBy, "ORDER");
2284 computeLimitRegisters(pParse, p, labelEnd);
2286 regLimitA = ++pParse->nMem;
2287 regLimitB = ++pParse->nMem;
2299 regAddrA = ++pParse->nMem;
2300 regEofA = ++pParse->nMem;
2301 regAddrB = ++pParse->nMem;
2302 regEofB = ++pParse->nMem;
2303 regOutA = ++pParse->nMem;
2304 regOutB = ++pParse->nMem;
2320 explainSetInteger(iSub1, pParse->iNextSelectId);
2321 sqlite3Select(pParse, pPrior, &destA);
2335 explainSetInteger(iSub2, pParse->iNextSelectId);
2336 sqlite3Select(pParse, p, &destB);
2347 addrOutA = generateOutputSubroutine(pParse,
2356 addrOutB = generateOutputSubroutine(pParse,
2444 sqlite3ReleaseTempRange(pParse, regPrev, nOrderBy+1);
2456 generateColumnNames(pParse, 0, pFirst->pEList);
2468 explainComposite(pParse, p->op, iSub1, iSub2, 0);
2673 Parse *pParse, /* Parsing context */
2679 const char *zSavedAuthContext = pParse->zAuthContext;
2690 sqlite3 *db = pParse->db;
2805 pParse->zAuthContext = pSubitem->zName;
2806 sqlite3AuthCheck(pParse, SQLITE_SELECT, 0, 0, 0);
2807 pParse->zAuthContext = zSavedAuthContext;
2893 Parse *pToplevel = sqlite3ParseToplevel(pParse);
3113 ** SQLITE_ERROR and leave an error in pParse. Otherwise, populate
3116 int sqlite3IndexedByLookup(Parse *pParse, struct SrcList_item *pFrom){
3126 sqlite3ErrorMsg(pParse, "no such index: %s", zIndex, 0);
3127 pParse->checkSchema = 1;
3160 Parse *pParse = pWalker->pParse;
3165 sqlite3 *db = pParse->db;
3180 sqlite3SrcListAssignCursors(pParse, pTabList);
3206 selectColumnsFromExprList(pParse, pSel->pEList, &pTab->nCol, &pTab->aCol);
3215 sqlite3LocateTable(pParse,0,pFrom->zName,pFrom->zDatabase);
3221 if( sqlite3ViewGetColumnNames(pParse, pTab) ) return WRC_Abort;
3230 if( sqlite3IndexedByLookup(pParse, pFrom) ){
3237 if( db->mallocFailed || sqliteProcessJoin(pParse, p) ){
3266 int flags = pParse->db->flags;
3276 pNew = sqlite3ExprListAppend(pParse, pNew, a[k].pExpr);
3343 pExpr = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight, 0);
3351 pNew = sqlite3ExprListAppend(pParse, pNew, pExpr);
3354 sqlite3ExprListSetName(pParse, pNew, &sColname, 0);
3360 sqlite3ErrorMsg(pParse, "no such table: %s", zTName);
3362 sqlite3ErrorMsg(pParse, "no tables specified");
3372 sqlite3ErrorMsg(pParse, "too many columns in result set");
3401 ** If anything goes wrong, an error message is written into pParse.
3402 ** The calling function can detect the problem by looking at pParse->nErr
3403 ** and/or pParse->db->mallocFailed.
3405 static void sqlite3SelectExpand(Parse *pParse, Select *pSelect){
3409 w.pParse = pParse;
3429 Parse *pParse;
3437 pParse = pWalker->pParse;
3446 selectAddColumnTypeAndCollation(pParse, pTab->nCol, pTab->aCol, pSel);
3462 static void sqlite3SelectAddTypeInfo(Parse *pParse, Select *pSelect){
3467 w.pParse = pParse;
3486 Parse *pParse, /* The parser context */
3492 db = pParse->db;
3494 sqlite3SelectExpand(pParse, p);
3495 if( pParse->nErr || db->mallocFailed ) return;
3496 sqlite3ResolveSelectNames(pParse, p, pOuterNC);
3497 if( pParse->nErr || db->mallocFailed ) return;
3498 sqlite3SelectAddTypeInfo(pParse, p);
3508 static void resetAccumulator(Parse *pParse, AggInfo *pAggInfo){
3509 Vdbe *v = pParse->pVdbe;
3524 sqlite3ErrorMsg(pParse, "DISTINCT aggregates must have exactly one "
3528 KeyInfo *pKeyInfo = keyInfoFromExprList(pParse, pE->x.pList);
3540 static void finalizeAggFunctions(Parse *pParse, AggInfo *pAggInfo){
3541 Vdbe *v = pParse->pVdbe;
3556 static void updateAccumulator(Parse *pParse, AggInfo *pAggInfo){
3557 Vdbe *v = pParse->pVdbe;
3563 sqlite3ExprCacheClear(pParse);
3572 regAgg = sqlite3GetTempRange(pParse, nArg);
3573 sqlite3ExprCodeExprList(pParse, pList, regAgg, 1);
3581 codeDistinct(pParse, pF->iDistinct, addrNext, 1, regAgg);
3589 pColl = sqlite3ExprCollSeq(pParse, pItem->pExpr);
3592 pColl = pParse->db->pDfltColl;
3599 sqlite3ExprCacheAffinityChange(pParse, regAgg, nArg);
3600 sqlite3ReleaseTempRange(pParse, regAgg, nArg);
3603 sqlite3ExprCacheClear(pParse);
3617 sqlite3ExprCacheClear(pParse);
3619 sqlite3ExprCode(pParse, pC->pExpr, pC->iMem);
3622 sqlite3ExprCacheClear(pParse);
3631 Parse *pParse, /* Parse context */
3635 if( pParse->explain==2 ){
3636 char *zEqp = sqlite3MPrintf(pParse->db, "SCAN TABLE %s %s%s(~%d rows)",
3643 pParse->pVdbe, OP_Explain, pParse->iSelectId, 0, 0, zEqp, P4_DYNAMIC
3700 ** pParse->zErrMsg.
3706 Parse *pParse, /* The parser context */
3729 int iRestoreSelectId = pParse->iSelectId;
3730 pParse->iSelectId = pParse->iNextSelectId++;
3733 db = pParse->db;
3734 if( p==0 || db->mallocFailed || pParse->nErr ){
3737 if( sqlite3AuthCheck(pParse, SQLITE_SELECT, 0, 0, 0) ) return 1;
3749 sqlite3SelectPrep(pParse, p, 0);
3753 if( pParse->nErr || db->mallocFailed ){
3761 v = sqlite3GetVdbe(pParse);
3768 if( checkForMultiColumnSelectError(pParse, pDest, pEList->nExpr) ){
3791 pParse->nHeight += sqlite3SelectExprHeight(p);
3795 if( flattenSubquery(pParse, p, i, isAgg, isAggSub) ){
3804 explainSetInteger(pItem->iSelectId, (u8)pParse->iNextSelectId);
3805 sqlite3Select(pParse, pSub, &dest);
3809 if( /*pParse->nErr ||*/ db->mallocFailed ){
3812 pParse->nHeight -= sqlite3SelectExprHeight(p);
3840 sqlite3ErrorMsg(pParse, "too many terms in compound SELECT");
3844 rc = multiSelect(pParse, p, pDest);
3845 explainSetInteger(pParse->iSelectId, iRestoreSelectId);
3881 pKeyInfo = keyInfoFromExprList(pParse, pOrderBy);
3882 pOrderBy->iECursor = pParse->nTab++;
3901 computeLimitRegisters(pParse, p, iEnd);
3908 distinct = pParse->nTab++;
3909 pKeyInfo = keyInfoFromExprList(pParse, p->pEList);
3922 pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, &pOrderBy, 0);
3938 selectInnerLoop(pParse, p, pEList, 0, 0, pOrderBy, -1, pDest,
3983 sNC.pParse = pParse;
4019 sAggInfo.sortingIdx = pParse->nTab++;
4020 pKeyInfo = keyInfoFromExprList(pParse, pGroupBy);
4027 iUseFlag = ++pParse->nMem;
4028 iAbortFlag = ++pParse->nMem;
4029 regOutputRow = ++pParse->nMem;
4031 regReset = ++pParse->nMem;
4033 iAMem = pParse->nMem + 1;
4034 pParse->nMem += pGroupBy->nExpr;
4035 iBMem = pParse->nMem + 1;
4036 pParse->nMem += pGroupBy->nExpr;
4048 pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, &pGroupBy, 0);
4068 explainTempTable(pParse,
4081 regBase = sqlite3GetTempRange(pParse, nCol);
4082 sqlite3ExprCacheClear(pParse);
4083 sqlite3ExprCodeExprList(pParse, pGroupBy, regBase, 0);
4092 r2 = sqlite3ExprCodeGetColumn(pParse,
4100 regRecord = sqlite3GetTempReg(pParse);
4103 sqlite3ReleaseTempReg(pParse, regRecord);
4104 sqlite3ReleaseTempRange(pParse, regBase, nCol);
4109 sqlite3ExprCacheClear(pParse);
4118 sqlite3ExprCacheClear(pParse);
4124 sqlite3ExprCode(pParse, pGroupBy->a[j].pExpr, iBMem+j);
4141 sqlite3ExprCodeMove(pParse, iBMem, iAMem, pGroupBy->nExpr);
4153 updateAccumulator(pParse, &sAggInfo);
4191 finalizeAggFunctions(pParse, &sAggInfo);
4192 sqlite3ExprIfFalse(pParse, pHaving, addrOutputRow+1, SQLITE_JUMPIFNULL);
4193 selectInnerLoop(pParse, p, p->pEList, 0, 0, pOrderBy,
4202 resetAccumulator(pParse, &sAggInfo);
4224 const int iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
4225 const int iCsr = pParse->nTab++; /* Cursor to scan b-tree */
4231 sqlite3CodeVerifySchema(pParse, iDb);
4232 sqlite3TableLock(pParse, iDb, pTab->tnum, 0, pTab->zName);
4252 pKeyInfo = sqlite3IndexKeyinfo(pParse, pBest);
4262 explainSimpleCount(pParse, pTab, pBest);
4307 resetAccumulator(pParse, &sAggInfo);
4308 pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, &pMinMax, flag);
4313 updateAccumulator(pParse, &sAggInfo);
4320 finalizeAggFunctions(pParse, &sAggInfo);
4324 sqlite3ExprIfFalse(pParse, pHaving, addrEnd, SQLITE_JUMPIFNULL);
4325 selectInnerLoop(pParse, p, p->pEList, 0, 0, 0, -1,
4334 explainTempTable(pParse, "DISTINCT");
4341 explainTempTable(pParse, "ORDER BY");
4342 generateSortTail(pParse, p, v, pEList->nExpr, pDest);
4358 explainSetInteger(pParse->iSelectId, iRestoreSelectId);
4363 generateColumnNames(pParse, pTabList, pEList);