Lines Matching refs:pParse
123 Parse *pParse, /* Parsing context */ in sqlite3SelectNew() argument
135 pAllocated = pNew = sqlite3DbMallocRawNN(pParse->db, sizeof(*pNew) ); in sqlite3SelectNew()
137 assert( pParse->db->mallocFailed ); in sqlite3SelectNew()
141 pEList = sqlite3ExprListAppend(pParse, 0, in sqlite3SelectNew()
142 sqlite3Expr(pParse->db,TK_ASTERISK,0)); in sqlite3SelectNew()
149 pNew->selId = ++pParse->nSelect; in sqlite3SelectNew()
153 if( pSrc==0 ) pSrc = sqlite3DbMallocZero(pParse->db, sizeof(*pSrc)); in sqlite3SelectNew()
167 if( pParse->db->mallocFailed ) { in sqlite3SelectNew()
168 clearSelect(pParse->db, pNew, pNew!=&standin); in sqlite3SelectNew()
171 assert( pNew->pSrc!=0 || pParse->nErr>0 ); in sqlite3SelectNew()
255 int sqlite3JoinType(Parse *pParse, Token *pA, Token *pB, Token *pC){ in sqlite3JoinType() argument
302 sqlite3ErrorMsg(pParse, "unknown join type: " in sqlite3JoinType()
486 static int sqlite3ProcessJoin(Parse *pParse, Select *p){ in sqlite3ProcessJoin() argument
508 sqlite3ErrorMsg(pParse, "a NATURAL join may not have " in sqlite3ProcessJoin()
518 pUsing = sqlite3IdListAppend(pParse, pUsing, 0); in sqlite3ProcessJoin()
522 pUsing->a[pUsing->nId-1].zName = sqlite3DbStrDup(pParse->db, zName); in sqlite3ProcessJoin()
531 if( pParse->nErr ) return 1; in sqlite3ProcessJoin()
543 sqlite3 *db = pParse->db; in sqlite3ProcessJoin()
560 sqlite3ErrorMsg(pParse, "cannot join using column %s - column " in sqlite3ProcessJoin()
587 sqlite3ErrorMsg(pParse, "ambiguous reference to %s in USING()", in sqlite3ProcessJoin()
591 pFuncArgs = sqlite3ExprListAppend(pParse, pFuncArgs, pE1); in sqlite3ProcessJoin()
596 pFuncArgs = sqlite3ExprListAppend(pParse, pFuncArgs, pE1); in sqlite3ProcessJoin()
597 pE1 = sqlite3ExprFunction(pParse, pFuncArgs, &tkCoalesce, 0); in sqlite3ProcessJoin()
602 pEq = sqlite3PExpr(pParse, TK_EQ, pE1, pE2); in sqlite3ProcessJoin()
610 p->pWhere = sqlite3ExprAnd(pParse, p->pWhere, pEq); in sqlite3ProcessJoin()
619 p->pWhere = sqlite3ExprAnd(pParse, p->pWhere, pRight->u3.pOn); in sqlite3ProcessJoin()
646 Parse *pParse, /* Statement under construction */ in innerLoopLoadRow() argument
650 sqlite3ExprCodeExprList(pParse, pSelect->pEList, pInfo->regResult, in innerLoopLoadRow()
654 sqlite3ExprCodeExprList(pParse, pInfo->pExtra, pInfo->regExtraResult, 0, 0); in innerLoopLoadRow()
655 sqlite3ExprListDelete(pParse->db, pInfo->pExtra); in innerLoopLoadRow()
667 Parse *pParse, in makeSorterRecord() argument
674 Vdbe *v = pParse->pVdbe; in makeSorterRecord()
675 int regOut = ++pParse->nMem; in makeSorterRecord()
677 innerLoopLoadRow(pParse, pSelect, pSort->pDeferredRowLoad); in makeSorterRecord()
688 Parse *pParse, /* Parser context */ in pushOntoSorter() argument
696 Vdbe *v = pParse->pVdbe; /* Stmt under construction */ in pushOntoSorter()
728 regBase = pParse->nMem + 1; in pushOntoSorter()
729 pParse->nMem += nBase; in pushOntoSorter()
733 pSort->labelDone = sqlite3VdbeMakeLabel(pParse); in pushOntoSorter()
734 sqlite3ExprCodeExprList(pParse, pSort->pOrderBy, regBase, regOrigData, in pushOntoSorter()
740 sqlite3ExprCodeMove(pParse, regData, regBase+nExpr+bSeq, nData); in pushOntoSorter()
750 regRecord = makeSorterRecord(pParse, pSort, pSelect, regBase, nBase); in pushOntoSorter()
751 regPrevKey = pParse->nMem+1; in pushOntoSorter()
752 pParse->nMem += pSort->nOBSat; in pushOntoSorter()
762 if( pParse->db->mallocFailed ) return; in pushOntoSorter()
768 pOp->p4.pKeyInfo = sqlite3KeyInfoFromExprList(pParse,pSort->pOrderBy,nOBSat, in pushOntoSorter()
773 pSort->labelBkOut = sqlite3VdbeMakeLabel(pParse); in pushOntoSorter()
774 pSort->regReturn = ++pParse->nMem; in pushOntoSorter()
782 sqlite3ExprCodeMove(pParse, regBase, regPrevKey, pSort->nOBSat); in pushOntoSorter()
811 regRecord = makeSorterRecord(pParse, pSort, pSelect, regBase, nBase); in pushOntoSorter()
884 Parse *pParse, /* Parsing and code generating context */ in codeDistinct() argument
893 Vdbe *v = pParse->pVdbe; in codeDistinct()
902 iRet = regPrev = pParse->nMem+1; in codeDistinct()
903 pParse->nMem += nResultCol; in codeDistinct()
907 CollSeq *pColl = sqlite3ExprCollSeq(pParse, pEList->a[i].pExpr); in codeDistinct()
918 assert( sqlite3VdbeCurrentAddr(v)==iJump || pParse->db->mallocFailed ); in codeDistinct()
929 int r1 = sqlite3GetTempReg(pParse); in codeDistinct()
935 sqlite3ReleaseTempReg(pParse, r1); in codeDistinct()
968 Parse *pParse, /* Parsing and code generating context */ in fixDistinctOpenEph() argument
973 if( pParse->nErr==0 in fixDistinctOpenEph()
976 Vdbe *v = pParse->pVdbe; in fixDistinctOpenEph()
1020 Parse *pParse, /* Leave any error here */ in selectExprDefer() argument
1056 Expr *pNew = sqlite3PExpr(pParse, TK_COLUMN, 0, 0); in selectExprDefer()
1062 pExtra = sqlite3ExprListAppend(pParse, pExtra, pNew); in selectExprDefer()
1090 Parse *pParse, /* The parser context */ in selectInnerLoop() argument
1099 Vdbe *v = pParse->pVdbe; in selectInnerLoop()
1133 pParse->nMem += nPrefixReg; in selectInnerLoop()
1135 pDest->iSdst = pParse->nMem+1; in selectInnerLoop()
1136 pParse->nMem += nResultCol; in selectInnerLoop()
1137 }else if( pDest->iSdst+nResultCol > pParse->nMem ){ in selectInnerLoop()
1143 pParse->nMem += nResultCol; in selectInnerLoop()
1182 selectExprDefer(pParse, pSort, p->pEList, &pExtra); in selectInnerLoop()
1183 if( pExtra && pParse->db->mallocFailed==0 ){ in selectInnerLoop()
1192 pParse->nMem += pExtra->nExpr; in selectInnerLoop()
1235 innerLoopLoadRow(pParse, p, &sRowLoadInfo); in selectInnerLoop()
1247 iTab = codeDistinct(pParse, eType, iTab, iContinue, p->pEList, regResult); in selectInnerLoop()
1248 fixDistinctOpenEph(pParse, eType, iTab, pDistinct->addrTnct); in selectInnerLoop()
1261 r1 = sqlite3GetTempReg(pParse); in selectInnerLoop()
1264 sqlite3ReleaseTempReg(pParse, r1); in selectInnerLoop()
1284 int r1 = sqlite3GetTempRange(pParse, nPrefixReg+1); in selectInnerLoop()
1309 pushOntoSorter(pParse, pSort, p, r1+nPrefixReg, regOrig, 1, nPrefixReg); in selectInnerLoop()
1311 int r2 = sqlite3GetTempReg(pParse); in selectInnerLoop()
1315 sqlite3ReleaseTempReg(pParse, r2); in selectInnerLoop()
1317 sqlite3ReleaseTempRange(pParse, r1, nPrefixReg+1); in selectInnerLoop()
1324 pParse, pSort, p, regResult, regOrig, nResultCol, nPrefixReg); in selectInnerLoop()
1327 int r1 = sqlite3GetTempReg(pParse); in selectInnerLoop()
1357 pParse, pSort, p, regResult, regOrig, nResultCol, nPrefixReg); in selectInnerLoop()
1359 int r1 = sqlite3GetTempReg(pParse); in selectInnerLoop()
1364 sqlite3ReleaseTempReg(pParse, r1); in selectInnerLoop()
1386 pParse, pSort, p, regResult, regOrig, nResultCol, nPrefixReg); in selectInnerLoop()
1401 pushOntoSorter(pParse, pSort, p, regResult, regOrig, nResultCol, in selectInnerLoop()
1427 r1 = sqlite3GetTempReg(pParse); in selectInnerLoop()
1428 r2 = sqlite3GetTempRange(pParse, nKey+2); in selectInnerLoop()
1452 sqlite3ReleaseTempReg(pParse, r1); in selectInnerLoop()
1453 sqlite3ReleaseTempRange(pParse, r2, nKey+2); in selectInnerLoop()
1551 Parse *pParse, /* Parsing context */ in sqlite3KeyInfoFromExprList() argument
1559 sqlite3 *db = pParse->db; in sqlite3KeyInfoFromExprList()
1567 pInfo->aColl[i-iStart] = sqlite3ExprNNCollSeq(pParse, pItem->pExpr); in sqlite3KeyInfoFromExprList()
1599 static void explainTempTable(Parse *pParse, const char *zUsage){ in explainTempTable() argument
1600 ExplainQueryPlan((pParse, 0, "USE TEMP B-TREE FOR %s", zUsage)); in explainTempTable()
1626 Parse *pParse, /* Parsing context */ in generateSortTail() argument
1632 Vdbe *v = pParse->pVdbe; /* The prepared statement */ in generateSortTail()
1634 int addrContinue = sqlite3VdbeMakeLabel(pParse);/* Jump here for next cycle */ in generateSortTail()
1662 int iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema); in generateSortTail()
1663 sqlite3OpenTable(pParse, pSort->aDefer[i].iCsr, iDb, pTab, OP_OpenRead); in generateSortTail()
1676 regRowid = sqlite3GetTempReg(pParse); in generateSortTail()
1678 regRow = sqlite3GetTempReg(pParse); in generateSortTail()
1681 regRow = sqlite3GetTempRange(pParse, nColumn); in generateSortTail()
1686 int regSortOut = ++pParse->nMem; in generateSortTail()
1687 iSortTab = pParse->nTab++; in generateSortTail()
1717 int regKey = sqlite3GetTempRange(pParse, nRefKey); in generateSortTail()
1742 sqlite3ReleaseTempRange(pParse, regKey, nRefKey); in generateSortTail()
1748 sqlite3ExprCode(pParse, aOutEx[i].pExpr, regRow+i); in generateSortTail()
1786 int r1 = sqlite3GetTempReg(pParse); in generateSortTail()
1809 sqlite3ReleaseTempRange(pParse, regRow, nColumn); in generateSortTail()
1811 sqlite3ReleaseTempReg(pParse, regRow); in generateSortTail()
1813 sqlite3ReleaseTempReg(pParse, regRowid); in generateSortTail()
1936 sNC.pParse = pNC->pParse; in columnTypeImpl()
1953 if( pNC->pParse && pTab->pSchema ){ in columnTypeImpl()
1954 int iDb = sqlite3SchemaToIndex(pNC->pParse->db, pTab->pSchema); in columnTypeImpl()
1955 zOrigDb = pNC->pParse->db->aDb[iDb].zDbSName; in columnTypeImpl()
1982 sNC.pParse = pNC->pParse; in columnTypeImpl()
2005 Parse *pParse, /* Parser context */ in generateColumnTypes() argument
2010 Vdbe *v = pParse->pVdbe; in generateColumnTypes()
2014 sNC.pParse = pParse; in generateColumnTypes()
2072 Parse *pParse, /* Parser context */ in sqlite3GenerateColumnNames() argument
2075 Vdbe *v = pParse->pVdbe; in sqlite3GenerateColumnNames()
2080 sqlite3 *db = pParse->db; in sqlite3GenerateColumnNames()
2086 if( pParse->explain ){ in sqlite3GenerateColumnNames()
2091 if( pParse->colNamesSet ) return; in sqlite3GenerateColumnNames()
2094 SELECTTRACE(1,pParse,pSelect,("generating column names\n")); in sqlite3GenerateColumnNames()
2099 pParse->colNamesSet = 1; in sqlite3GenerateColumnNames()
2139 generateColumnTypes(pParse, pTabList, pEList); in sqlite3GenerateColumnNames()
2165 Parse *pParse, /* Parsing context */ in sqlite3ColumnsFromExprList() argument
2170 sqlite3 *db = pParse->db; /* Database connection */ in sqlite3ColumnsFromExprList()
2281 Parse *pParse, /* Parsing contexts */ in sqlite3SelectAddColumnTypeAndCollation() argument
2286 sqlite3 *db = pParse->db; in sqlite3SelectAddColumnTypeAndCollation()
2322 pColl = sqlite3ExprCollSeq(pParse, p); in sqlite3SelectAddColumnTypeAndCollation()
2335 Table *sqlite3ResultSetOfSelect(Parse *pParse, Select *pSelect, char aff){ in sqlite3ResultSetOfSelect() argument
2337 sqlite3 *db = pParse->db; in sqlite3ResultSetOfSelect()
2343 sqlite3SelectPrep(pParse, pSelect, 0); in sqlite3ResultSetOfSelect()
2345 if( pParse->nErr ) return 0; in sqlite3ResultSetOfSelect()
2354 sqlite3ColumnsFromExprList(pParse, pSelect->pEList, &pTab->nCol, &pTab->aCol); in sqlite3ResultSetOfSelect()
2355 sqlite3SelectAddColumnTypeAndCollation(pParse, pTab, pSelect, aff); in sqlite3ResultSetOfSelect()
2368 Vdbe *sqlite3GetVdbe(Parse *pParse){ in sqlite3GetVdbe() argument
2369 if( pParse->pVdbe ){ in sqlite3GetVdbe()
2370 return pParse->pVdbe; in sqlite3GetVdbe()
2372 if( pParse->pToplevel==0 in sqlite3GetVdbe()
2373 && OptimizationEnabled(pParse->db,SQLITE_FactorOutConst) in sqlite3GetVdbe()
2375 pParse->okConstFactor = 1; in sqlite3GetVdbe()
2377 return sqlite3VdbeCreate(pParse); in sqlite3GetVdbe()
2404 static void computeLimitRegisters(Parse *pParse, Select *p, int iBreak){ in computeLimitRegisters() argument
2422 p->iLimit = iLimit = ++pParse->nMem; in computeLimitRegisters()
2423 v = sqlite3GetVdbe(pParse); in computeLimitRegisters()
2435 sqlite3ExprCode(pParse, pLimit->pLeft, iLimit); in computeLimitRegisters()
2441 p->iOffset = iOffset = ++pParse->nMem; in computeLimitRegisters()
2442 pParse->nMem++; /* Allocate an extra register for limit+offset */ in computeLimitRegisters()
2443 sqlite3ExprCode(pParse, pLimit->pRight, iOffset); in computeLimitRegisters()
2461 static CollSeq *multiSelectCollSeq(Parse *pParse, Select *p, int iCol){ in multiSelectCollSeq() argument
2464 pRet = multiSelectCollSeq(pParse, p->pPrior, iCol); in multiSelectCollSeq()
2473 pRet = sqlite3ExprCollSeq(pParse, p->pEList->a[iCol].pExpr); in multiSelectCollSeq()
2487 static KeyInfo *multiSelectOrderByKeyInfo(Parse *pParse, Select *p, int nExtra){ in multiSelectOrderByKeyInfo() argument
2490 sqlite3 *db = pParse->db; in multiSelectOrderByKeyInfo()
2500 pColl = sqlite3ExprCollSeq(pParse, pTerm); in multiSelectOrderByKeyInfo()
2502 pColl = multiSelectCollSeq(pParse, p, pItem->u.x.iOrderByCol-1); in multiSelectOrderByKeyInfo()
2505 sqlite3ExprAddCollateString(pParse, pTerm, pColl->zName); in multiSelectOrderByKeyInfo()
2554 Parse *pParse, /* Parsing context */ in generateWithRecursiveQuery() argument
2560 Vdbe *v = pParse->pVdbe; /* The prepared statement under construction */ in generateWithRecursiveQuery()
2579 sqlite3ErrorMsg(pParse, "cannot use window functions in recursive queries"); in generateWithRecursiveQuery()
2585 if( sqlite3AuthCheck(pParse, SQLITE_RECURSIVE, 0, 0, 0) ) return; in generateWithRecursiveQuery()
2588 addrBreak = sqlite3VdbeMakeLabel(pParse); in generateWithRecursiveQuery()
2590 computeLimitRegisters(pParse, p, addrBreak); in generateWithRecursiveQuery()
2609 iQueue = pParse->nTab++; in generateWithRecursiveQuery()
2612 iDistinct = pParse->nTab++; in generateWithRecursiveQuery()
2619 regCurrent = ++pParse->nMem; in generateWithRecursiveQuery()
2622 KeyInfo *pKeyInfo = multiSelectOrderByKeyInfo(pParse, p, 1); in generateWithRecursiveQuery()
2647 sqlite3ErrorMsg(pParse, "recursive aggregate queries not supported"); in generateWithRecursiveQuery()
2657 ExplainQueryPlan((pParse, 1, "SETUP")); in generateWithRecursiveQuery()
2658 rc = sqlite3Select(pParse, pSetup, &destQueue); in generateWithRecursiveQuery()
2675 addrCont = sqlite3VdbeMakeLabel(pParse); in generateWithRecursiveQuery()
2677 selectInnerLoop(pParse, p, iCurrent, in generateWithRecursiveQuery()
2689 ExplainQueryPlan((pParse, 1, "RECURSIVE STEP")); in generateWithRecursiveQuery()
2690 sqlite3Select(pParse, p, &destQueue); in generateWithRecursiveQuery()
2699 sqlite3ExprListDelete(pParse->db, p->pOrderBy); in generateWithRecursiveQuery()
2708 Parse *pParse, /* Parsing context */
2730 Parse *pParse, /* Parsing context */ in multiSelectValues() argument
2750 ExplainQueryPlan((pParse, 0, "SCAN %d CONSTANT ROW%s", nRow, in multiSelectValues()
2753 selectInnerLoop(pParse, p, -1, 0, 0, pDest, 1, 1); in multiSelectValues()
2803 Parse *pParse, /* Parsing context */ in multiSelect() argument
2820 db = pParse->db; in multiSelect()
2826 v = sqlite3GetVdbe(pParse); in multiSelect()
2840 rc = multiSelectValues(pParse, p, &dest); in multiSelect()
2853 generateWithRecursiveQuery(pParse, p, &dest); in multiSelect()
2860 return multiSelectOrderBy(pParse, p, pDest); in multiSelect()
2865 ExplainQueryPlan((pParse, 1, "COMPOUND QUERY")); in multiSelect()
2866 ExplainQueryPlan((pParse, 1, "LEFT-MOST SUBQUERY")); in multiSelect()
2880 SELECTTRACE(1, pParse, p, ("multiSelect UNION ALL left...\n")); in multiSelect()
2881 rc = sqlite3Select(pParse, pPrior, &dest); in multiSelect()
2897 ExplainQueryPlan((pParse, 1, "UNION ALL")); in multiSelect()
2898 SELECTTRACE(1, pParse, p, ("multiSelect UNION ALL right...\n")); in multiSelect()
2899 rc = sqlite3Select(pParse, p, &dest); in multiSelect()
2937 unionTab = pParse->nTab++; in multiSelect()
2951 SELECTTRACE(1, pParse, p, ("multiSelect EXCEPT/UNION left...\n")); in multiSelect()
2952 rc = sqlite3Select(pParse, pPrior, &uniondest); in multiSelect()
2969 ExplainQueryPlan((pParse, 1, "%s USING TEMP B-TREE", in multiSelect()
2971 SELECTTRACE(1, pParse, p, ("multiSelect EXCEPT/UNION right...\n")); in multiSelect()
2972 rc = sqlite3Select(pParse, p, &uniondest); in multiSelect()
2993 iBreak = sqlite3VdbeMakeLabel(pParse); in multiSelect()
2994 iCont = sqlite3VdbeMakeLabel(pParse); in multiSelect()
2995 computeLimitRegisters(pParse, p, iBreak); in multiSelect()
2998 selectInnerLoop(pParse, p, unionTab, in multiSelect()
3019 tab1 = pParse->nTab++; in multiSelect()
3020 tab2 = pParse->nTab++; in multiSelect()
3032 SELECTTRACE(1, pParse, p, ("multiSelect INTERSECT left...\n")); in multiSelect()
3033 rc = sqlite3Select(pParse, pPrior, &intersectdest); in multiSelect()
3047 ExplainQueryPlan((pParse, 1, "%s USING TEMP B-TREE", in multiSelect()
3049 SELECTTRACE(1, pParse, p, ("multiSelect INTERSECT right...\n")); in multiSelect()
3050 rc = sqlite3Select(pParse, p, &intersectdest); in multiSelect()
3065 iBreak = sqlite3VdbeMakeLabel(pParse); in multiSelect()
3066 iCont = sqlite3VdbeMakeLabel(pParse); in multiSelect()
3067 computeLimitRegisters(pParse, p, iBreak); in multiSelect()
3069 r1 = sqlite3GetTempReg(pParse); in multiSelect()
3073 sqlite3ReleaseTempReg(pParse, r1); in multiSelect()
3074 selectInnerLoop(pParse, p, tab1, in multiSelect()
3087 ExplainQueryPlanPop(pParse); in multiSelect()
3091 if( pParse->nErr ) goto multi_select_end; in multiSelect()
3118 *apColl = multiSelectCollSeq(pParse, p, i); in multiSelect()
3146 sqlite3ParserAddCleanup(pParse, in multiSelect()
3158 void sqlite3SelectWrongNumTermsError(Parse *pParse, Select *p){ in sqlite3SelectWrongNumTermsError() argument
3160 sqlite3ErrorMsg(pParse, "all VALUES must have the same number of terms"); in sqlite3SelectWrongNumTermsError()
3162 sqlite3ErrorMsg(pParse, "SELECTs to the left and right of %s" in sqlite3SelectWrongNumTermsError()
3189 Parse *pParse, /* Parsing context */ in generateOutputSubroutine() argument
3198 Vdbe *v = pParse->pVdbe; in generateOutputSubroutine()
3203 iContinue = sqlite3VdbeMakeLabel(pParse); in generateOutputSubroutine()
3217 if( pParse->db->mallocFailed ) return 0; in generateOutputSubroutine()
3229 int r1 = sqlite3GetTempReg(pParse); in generateOutputSubroutine()
3230 int r2 = sqlite3GetTempReg(pParse); in generateOutputSubroutine()
3235 sqlite3ReleaseTempReg(pParse, r2); in generateOutputSubroutine()
3236 sqlite3ReleaseTempReg(pParse, r1); in generateOutputSubroutine()
3246 r1 = sqlite3GetTempReg(pParse); in generateOutputSubroutine()
3251 sqlite3ReleaseTempReg(pParse, r1); in generateOutputSubroutine()
3262 sqlite3ExprCodeMove(pParse, pIn->iSdst, pDest->iSDParm, pIn->nSdst); in generateOutputSubroutine()
3273 pDest->iSdst = sqlite3GetTempRange(pParse, pIn->nSdst); in generateOutputSubroutine()
3276 sqlite3ExprCodeMove(pParse, pIn->iSdst, pDest->iSdst, pIn->nSdst); in generateOutputSubroutine()
3397 Parse *pParse, /* Parsing context */ in multiSelectOrderBy() argument
3440 db = pParse->db; in multiSelectOrderBy()
3441 v = pParse->pVdbe; in multiSelectOrderBy()
3443 labelEnd = sqlite3VdbeMakeLabel(pParse); in multiSelectOrderBy()
3444 labelCmpr = sqlite3VdbeMakeLabel(pParse); in multiSelectOrderBy()
3472 p->pOrderBy = pOrderBy = sqlite3ExprListAppend(pParse, pOrderBy, pNew); in multiSelectOrderBy()
3495 pKeyMerge = multiSelectOrderByKeyInfo(pParse, p, 1); in multiSelectOrderBy()
3509 regPrev = pParse->nMem+1; in multiSelectOrderBy()
3510 pParse->nMem += nExpr+1; in multiSelectOrderBy()
3516 pKeyDup->aColl[i] = multiSelectCollSeq(pParse, p, i); in multiSelectOrderBy()
3545 pPrior->pOrderBy = sqlite3ExprListDup(pParse->db, pOrderBy, 0); in multiSelectOrderBy()
3546 sqlite3ResolveOrderGroupBy(pParse, p, p->pOrderBy, "ORDER"); in multiSelectOrderBy()
3547 sqlite3ResolveOrderGroupBy(pParse, pPrior, pPrior->pOrderBy, "ORDER"); in multiSelectOrderBy()
3550 computeLimitRegisters(pParse, p, labelEnd); in multiSelectOrderBy()
3552 regLimitA = ++pParse->nMem; in multiSelectOrderBy()
3553 regLimitB = ++pParse->nMem; in multiSelectOrderBy()
3563 regAddrA = ++pParse->nMem; in multiSelectOrderBy()
3564 regAddrB = ++pParse->nMem; in multiSelectOrderBy()
3565 regOutA = ++pParse->nMem; in multiSelectOrderBy()
3566 regOutB = ++pParse->nMem; in multiSelectOrderBy()
3570 ExplainQueryPlan((pParse, 1, "MERGE (%s)", sqlite3SelectOpName(p->op))); in multiSelectOrderBy()
3579 ExplainQueryPlan((pParse, 1, "LEFT")); in multiSelectOrderBy()
3580 sqlite3Select(pParse, pPrior, &destA); in multiSelectOrderBy()
3594 ExplainQueryPlan((pParse, 1, "RIGHT")); in multiSelectOrderBy()
3595 sqlite3Select(pParse, p, &destB); in multiSelectOrderBy()
3604 addrOutA = generateOutputSubroutine(pParse, in multiSelectOrderBy()
3613 addrOutB = generateOutputSubroutine(pParse, in multiSelectOrderBy()
3699 sqlite3ParserAddCleanup(pParse, in multiSelectOrderBy()
3709 ExplainQueryPlanPop(pParse); in multiSelectOrderBy()
3710 return pParse->nErr!=0; in multiSelectOrderBy()
3751 Parse *pParse; /* The parsing context */ member
3804 sqlite3VectorErrorMsg(pSubst->pParse, pCopy); in substExpr()
3806 sqlite3 *db = pSubst->pParse->db; in substExpr()
3840 CollSeq *pNat = sqlite3ExprCollSeq(pSubst->pParse, pExpr); in substExpr()
3841 CollSeq *pColl = sqlite3ExprCollSeq(pSubst->pParse, in substExpr()
3845 pExpr = sqlite3ExprAddCollateString(pSubst->pParse, pExpr, in substExpr()
3959 Parse *pParse, /* Parse context */ in srclistRenumberCursors() argument
3971 aCsrMap[pItem->iCursor+1] = pParse->nTab++; in srclistRenumberCursors()
3975 srclistRenumberCursors(pParse, aCsrMap, p->pSrc, -1); in srclistRenumberCursors()
4026 Parse *pParse, /* Parse context */ in renumberCursors() argument
4032 srclistRenumberCursors(pParse, aCsrMap, p->pSrc, iExcept); in renumberCursors()
4227 Parse *pParse, /* Parsing context */ in flattenSubquery() argument
4232 const char *zSavedAuthContext = pParse->zAuthContext; in flattenSubquery()
4244 sqlite3 *db = pParse->db; in flattenSubquery()
4390 if( pParse->nSelect>500 ) return 0; in flattenSubquery()
4392 aCsrMap = sqlite3DbMallocZero(db, ((i64)pParse->nTab+1)*sizeof(int)); in flattenSubquery()
4393 if( aCsrMap ) aCsrMap[0] = pParse->nTab; in flattenSubquery()
4398 SELECTTRACE(1,pParse,p,("flatten %u.%p from term %d\n", in flattenSubquery()
4402 pParse->zAuthContext = pSubitem->zName; in flattenSubquery()
4403 TESTONLY(i =) sqlite3AuthCheck(pParse, SQLITE_SELECT, 0, 0, 0); in flattenSubquery()
4405 pParse->zAuthContext = zSavedAuthContext; in flattenSubquery()
4469 pNew->selId = ++pParse->nSelect; in flattenSubquery()
4471 renumberCursors(pParse, pNew, iFrom, aCsrMap); in flattenSubquery()
4477 SELECTTRACE(2,pParse,p,("compound-subquery flattener" in flattenSubquery()
4498 Parse *pToplevel = sqlite3ParseToplevel(pParse); in flattenSubquery()
4552 pSrc = sqlite3SrcListEnlarge(pParse, pSrc, nSubSrc-1,iFrom+1); in flattenSubquery()
4610 pParent->pWhere = sqlite3PExpr(pParse, TK_AND, pWhere, pParent->pWhere); in flattenSubquery()
4617 x.pParse = pParse; in flattenSubquery()
4652 sqlite3AggInfoPersistWalkerInit(&w, pParse); in flattenSubquery()
4658 SELECTTRACE(0x100,pParse,p,("After flattening:\n")); in flattenSubquery()
4673 Parse *pParse; /* Parsing context */ member
4703 if( !sqlite3IsBinary(sqlite3ExprCompareCollSeq(pConst->pParse,pExpr)) ){ in constInsert()
4723 pConst->apExpr = sqlite3DbReallocOrFree(pConst->pParse->db, pConst->apExpr, in constInsert()
4801 pExpr->pLeft = sqlite3ExprDup(pConst->pParse->db, pConst->apExpr[i*2+1], 0); in propagateConstantExprRewriteOne()
4802 if( pConst->pParse->db->mallocFailed ) return WRC_Prune; in propagateConstantExprRewriteOne()
4896 Parse *pParse, /* The parsing context */ in propagateConstants() argument
4902 x.pParse = pParse; in propagateConstants()
4903 x.pOomFault = &pParse->db->mallocFailed; in propagateConstants()
4923 w.pParse = pParse; in propagateConstants()
4930 sqlite3DbFree(x.pParse->db, x.apExpr); in propagateConstants()
4957 static int pushDownWindowCheck(Parse *pParse, Select *pSubq, Expr *pExpr){ in pushDownWindowCheck() argument
4961 return sqlite3ExprIsConstantOrGroupBy(pParse, pExpr, pSubq->pWin->pPartition); in pushDownWindowCheck()
5043 Parse *pParse, /* Parse context (for malloc() and error reporting) */ in pushDownWhereTerms() argument
5086 nChng += pushDownWhereTerms(pParse, pSubq, pWhere->pRight, pSrc); in pushDownWhereTerms()
5109 pNew = sqlite3ExprDup(pParse->db, pWhere, 0); in pushDownWhereTerms()
5111 x.pParse = pParse; in pushDownWhereTerms()
5119 if( pSubq->pWin && 0==pushDownWindowCheck(pParse, pSubq, pNew) ){ in pushDownWhereTerms()
5121 sqlite3ExprDelete(pParse->db, pNew); in pushDownWhereTerms()
5127 pSubq->pHaving = sqlite3ExprAnd(pParse, pSubq->pHaving, pNew); in pushDownWhereTerms()
5129 pSubq->pWhere = sqlite3ExprAnd(pParse, pSubq->pWhere, pNew); in pushDownWhereTerms()
5248 int sqlite3IndexedByLookup(Parse *pParse, SrcItem *pFrom){ in sqlite3IndexedByLookup() argument
5260 sqlite3ErrorMsg(pParse, "no such index: %s", zIndexedBy, 0); in sqlite3IndexedByLookup()
5261 pParse->checkSchema = 1; in sqlite3IndexedByLookup()
5297 Parse *pParse; in convertCompoundSelectToSubquery() local
5320 pParse = pWalker->pParse; in convertCompoundSelectToSubquery()
5321 db = pParse->db; in convertCompoundSelectToSubquery()
5325 pNewSrc = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&dummy,pNew,0); in convertCompoundSelectToSubquery()
5329 p->pEList = sqlite3ExprListAppend(pParse, 0, sqlite3Expr(db, TK_ASTERISK, 0)); in convertCompoundSelectToSubquery()
5355 static int cannotBeFunction(Parse *pParse, SrcItem *pFrom){ in cannotBeFunction() argument
5357 sqlite3ErrorMsg(pParse, "'%s' is not a function", pFrom->zName); in cannotBeFunction()
5413 With *sqlite3WithPush(Parse *pParse, With *pWith, u8 bFree){ in sqlite3WithPush() argument
5416 pWith = (With*)sqlite3ParserAddCleanup(pParse, in sqlite3WithPush()
5421 if( pParse->nErr==0 ){ in sqlite3WithPush()
5422 assert( pParse->pWith!=pWith ); in sqlite3WithPush()
5423 pWith->pOuter = pParse->pWith; in sqlite3WithPush()
5424 pParse->pWith = pWith; in sqlite3WithPush()
5445 Parse *pParse, /* The parsing context */ in resolveFromTermToCte() argument
5453 if( pParse->pWith==0 ){ in resolveFromTermToCte()
5457 if( pParse->nErr ){ in resolveFromTermToCte()
5475 pCte = searchWith(pParse->pWith, pFrom, &pWith); in resolveFromTermToCte()
5477 sqlite3 *db = pParse->db; in resolveFromTermToCte()
5493 sqlite3ErrorMsg(pParse, pCte->zCteErr, pCte->zName); in resolveFromTermToCte()
5496 if( cannotBeFunction(pParse, pFrom) ) return 2; in resolveFromTermToCte()
5505 || sqlite3ParserAddCleanup(pParse,sqlite3DbFree,pCteUse)==0 in resolveFromTermToCte()
5523 sqlite3ErrorMsg(pParse, "no such index: \"%s\"", pFrom->u1.zIndexedBy); in resolveFromTermToCte()
5550 sqlite3ErrorMsg(pParse, in resolveFromTermToCte()
5556 if( iRecTab<0 ) iRecTab = pParse->nTab++; in resolveFromTermToCte()
5565 pSavedWith = pParse->pWith; in resolveFromTermToCte()
5566 pParse->pWith = pWith; in resolveFromTermToCte()
5578 pParse->pWith = pSavedWith; in resolveFromTermToCte()
5583 pParse->pWith = pSavedWith; in resolveFromTermToCte()
5587 pParse->pWith = pWith; in resolveFromTermToCte()
5593 sqlite3ErrorMsg(pParse, "table %s has %d values for %d columns", in resolveFromTermToCte()
5596 pParse->pWith = pSavedWith; in resolveFromTermToCte()
5602 sqlite3ColumnsFromExprList(pParse, pEList, &pTab->nCol, &pTab->aCol); in resolveFromTermToCte()
5612 pParse->pWith = pSavedWith; in resolveFromTermToCte()
5629 Parse *pParse = pWalker->pParse; in sqlite3SelectPopWith() local
5630 if( OK_IF_ALWAYS_TRUE(pParse->pWith) && p->pPrior==0 ){ in sqlite3SelectPopWith()
5633 assert( pParse->pWith==pWith || pParse->nErr ); in sqlite3SelectPopWith()
5634 pParse->pWith = pWith->pOuter; in sqlite3SelectPopWith()
5647 int sqlite3ExpandSubquery(Parse *pParse, SrcItem *pFrom){ in sqlite3ExpandSubquery() argument
5652 pFrom->pTab = pTab = sqlite3DbMallocZero(pParse->db, sizeof(Table)); in sqlite3ExpandSubquery()
5656 pTab->zName = sqlite3DbStrDup(pParse->db, pFrom->zAlias); in sqlite3ExpandSubquery()
5658 pTab->zName = sqlite3MPrintf(pParse->db, "%!S", pFrom); in sqlite3ExpandSubquery()
5661 sqlite3ColumnsFromExprList(pParse, pSel->pEList,&pTab->nCol,&pTab->aCol); in sqlite3ExpandSubquery()
5670 return pParse->nErr ? SQLITE_ERROR : SQLITE_OK; in sqlite3ExpandSubquery()
5724 Parse *pParse = pWalker->pParse; in selectExpander() local
5729 sqlite3 *db = pParse->db; in selectExpander()
5744 p->selId = ++pParse->nSelect; in selectExpander()
5748 if( pParse->pWith && (p->selFlags & SF_View) ){ in selectExpander()
5757 sqlite3WithPush(pParse, p->pWith, 0); in selectExpander()
5762 sqlite3SrcListAssignCursors(pParse, pTabList); in selectExpander()
5780 if( sqlite3ExpandSubquery(pParse, pFrom) ) return WRC_Abort; in selectExpander()
5783 }else if( (rc = resolveFromTermToCte(pParse, pWalker, pFrom))!=0 ){ in selectExpander()
5791 pFrom->pTab = pTab = sqlite3LocateTableItem(pParse, 0, pFrom); in selectExpander()
5794 sqlite3ErrorMsg(pParse, "too many references to \"%s\": max 65535", in selectExpander()
5800 if( !IsVirtual(pTab) && cannotBeFunction(pParse, pFrom) ){ in selectExpander()
5807 if( sqlite3ViewGetColumnNames(pParse, pTab) ) return WRC_Abort; in selectExpander()
5813 sqlite3ErrorMsg(pParse, "access to view \"%s\" prohibited", in selectExpander()
5824 sqlite3ErrorMsg(pParse, "unsafe use of virtual table \"%s\"", in selectExpander()
5840 if( pFrom->fg.isIndexedBy && sqlite3IndexedByLookup(pParse, pFrom) ){ in selectExpander()
5847 assert( db->mallocFailed==0 || pParse->nErr!=0 ); in selectExpander()
5848 if( pParse->nErr || sqlite3ProcessJoin(pParse, p) ){ in selectExpander()
5879 int flags = pParse->db->flags; in selectExpander()
5893 pNew = sqlite3ExprListAppend(pParse, pNew, a[k].pExpr); in selectExpander()
5945 pNew = sqlite3ExprListAppend(pParse, pNew, pRight); in selectExpander()
6006 pExpr = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight); in selectExpander()
6008 sqlite3RenameTokenRemap(pParse, pLeft, pE->pLeft); in selectExpander()
6012 pExpr = sqlite3PExpr(pParse, TK_DOT, pLeft, pExpr); in selectExpander()
6017 pNew = sqlite3ExprListAppend(pParse, pNew, pExpr); in selectExpander()
6051 sqlite3ErrorMsg(pParse, "no such table: %s", zTName); in selectExpander()
6053 sqlite3ErrorMsg(pParse, "no tables specified"); in selectExpander()
6063 sqlite3ErrorMsg(pParse, "too many columns in result set"); in selectExpander()
6072 SELECTTRACE(0x100,pParse,p,("After result-set wildcard expansion:\n")); in selectExpander()
6102 static void sqlite3SelectExpand(Parse *pParse, Select *pSelect){ in sqlite3SelectExpand() argument
6105 w.pParse = pParse; in sqlite3SelectExpand()
6106 if( OK_IF_ALWAYS_TRUE(pParse->hasCompound) ){ in sqlite3SelectExpand()
6133 Parse *pParse; in selectAddSubqueryTypeInfo() local
6141 pParse = pWalker->pParse; in selectAddSubqueryTypeInfo()
6151 sqlite3SelectAddColumnTypeAndCollation(pParse, pTab, pSel, in selectAddSubqueryTypeInfo()
6167 static void sqlite3SelectAddTypeInfo(Parse *pParse, Select *pSelect){ in sqlite3SelectAddTypeInfo() argument
6173 w.pParse = pParse; in sqlite3SelectAddTypeInfo()
6192 Parse *pParse, /* The parser context */ in sqlite3SelectPrep() argument
6196 assert( p!=0 || pParse->db->mallocFailed ); in sqlite3SelectPrep()
6197 assert( pParse->db->pParse==pParse ); in sqlite3SelectPrep()
6198 if( pParse->db->mallocFailed ) return; in sqlite3SelectPrep()
6200 sqlite3SelectExpand(pParse, p); in sqlite3SelectPrep()
6201 if( pParse->nErr ) return; in sqlite3SelectPrep()
6202 sqlite3ResolveSelectNames(pParse, p, pOuterNC); in sqlite3SelectPrep()
6203 if( pParse->nErr ) return; in sqlite3SelectPrep()
6204 sqlite3SelectAddTypeInfo(pParse, p); in sqlite3SelectPrep()
6215 static void resetAccumulator(Parse *pParse, AggInfo *pAggInfo){ in resetAccumulator() argument
6216 Vdbe *v = pParse->pVdbe; in resetAccumulator()
6220 assert( pParse->db->pParse==pParse ); in resetAccumulator()
6221 assert( pParse->db->mallocFailed==0 || pParse->nErr!=0 ); in resetAccumulator()
6223 if( pParse->nErr ) return; in resetAccumulator()
6243 sqlite3ErrorMsg(pParse, "DISTINCT aggregates must have exactly one " in resetAccumulator()
6247 KeyInfo *pKeyInfo = sqlite3KeyInfoFromExprList(pParse, pE->x.pList,0,0); in resetAccumulator()
6250 ExplainQueryPlan((pParse, 0, "USE TEMP B-TREE FOR %s(DISTINCT)", in resetAccumulator()
6261 static void finalizeAggFunctions(Parse *pParse, AggInfo *pAggInfo){ in finalizeAggFunctions() argument
6262 Vdbe *v = pParse->pVdbe; in finalizeAggFunctions()
6285 Parse *pParse, in updateAccumulator() argument
6290 Vdbe *v = pParse->pVdbe; in updateAccumulator()
6315 if( regHit==0 ) regHit = ++pParse->nMem; in updateAccumulator()
6325 addrNext = sqlite3VdbeMakeLabel(pParse); in updateAccumulator()
6326 sqlite3ExprIfFalse(pParse, pFilter, addrNext, SQLITE_JUMPIFNULL); in updateAccumulator()
6330 regAgg = sqlite3GetTempRange(pParse, nArg); in updateAccumulator()
6331 sqlite3ExprCodeExprList(pParse, pList, regAgg, 0, SQLITE_ECEL_DUP); in updateAccumulator()
6338 addrNext = sqlite3VdbeMakeLabel(pParse); in updateAccumulator()
6340 pF->iDistinct = codeDistinct(pParse, eDistinctType, in updateAccumulator()
6349 pColl = sqlite3ExprCollSeq(pParse, pItem->pExpr); in updateAccumulator()
6352 pColl = pParse->db->pDfltColl; in updateAccumulator()
6354 if( regHit==0 && pAggInfo->nAccumulator ) regHit = ++pParse->nMem; in updateAccumulator()
6360 sqlite3ReleaseTempRange(pParse, regAgg, nArg); in updateAccumulator()
6372 sqlite3ExprCode(pParse, pC->pCExpr, pC->iMem); in updateAccumulator()
6387 Parse *pParse, /* Parse context */ in explainSimpleCount() argument
6391 if( pParse->explain==2 ){ in explainSimpleCount()
6393 sqlite3VdbeExplain(pParse, 0, "SCAN %s%s%s", in explainSimpleCount()
6425 if( sqlite3ExprIsConstantOrGroupBy(pWalker->pParse, pExpr, pS->pGroupBy) in havingToWhereExprCb()
6429 sqlite3 *db = pWalker->pParse->db; in havingToWhereExprCb()
6434 pNew = sqlite3ExprAnd(pWalker->pParse, pWhere, pNew); in havingToWhereExprCb()
6459 static void havingToWhere(Parse *pParse, Select *p){ in havingToWhere() argument
6462 sWalker.pParse = pParse; in havingToWhere()
6468 SELECTTRACE(0x100,pParse,p,("Move HAVING terms into WHERE:\n")); in havingToWhere()
6540 static int countOfViewOptimization(Parse *pParse, Select *p){ in countOfViewOptimization() argument
6569 db = pParse->db; in countOfViewOptimization()
6575 p->pSrc = sqlite3DbMallocZero(pParse->db, sizeof(*p->pSrc)); in countOfViewOptimization()
6586 pSub->pEList = sqlite3ExprListAppend(pParse, 0, pTerm); in countOfViewOptimization()
6587 pTerm = sqlite3PExpr(pParse, TK_SELECT, 0, 0); in countOfViewOptimization()
6588 sqlite3PExprAddSelect(pParse, pTerm, pSub); in countOfViewOptimization()
6592 pExpr = sqlite3PExpr(pParse, TK_PLUS, pTerm, pExpr); in countOfViewOptimization()
6601 SELECTTRACE(0x400,pParse,p,("After count-of-view optimization:\n")); in countOfViewOptimization()
6646 Parse *pParse, /* The parser context */ in sqlite3Select() argument
6668 db = pParse->db; in sqlite3Select()
6669 assert( pParse==db->pParse ); in sqlite3Select()
6670 v = sqlite3GetVdbe(pParse); in sqlite3Select()
6671 if( p==0 || pParse->nErr ){ in sqlite3Select()
6675 if( sqlite3AuthCheck(pParse, SQLITE_SELECT, 0, 0, 0) ) return 1; in sqlite3Select()
6677 SELECTTRACE(1,pParse,p, ("begin processing:\n", pParse->addrExplain)); in sqlite3Select()
6698 SELECTTRACE(1,pParse,p, ("dropping superfluous ORDER BY:\n")); in sqlite3Select()
6703 sqlite3ParserAddCleanup(pParse, in sqlite3Select()
6706 testcase( pParse->earlyCleanup ); in sqlite3Select()
6712 sqlite3SelectPrep(pParse, p, 0); in sqlite3Select()
6713 if( pParse->nErr ){ in sqlite3Select()
6720 SELECTTRACE(0x104,pParse,p, ("after name resolution:\n")); in sqlite3Select()
6737 sqlite3ErrorMsg(pParse, in sqlite3Select()
6752 sqlite3GenerateColumnNames(pParse, p); in sqlite3Select()
6756 if( sqlite3WindowRewrite(pParse, p) ){ in sqlite3Select()
6757 assert( pParse->nErr ); in sqlite3Select()
6762 SELECTTRACE(0x104,pParse,p, ("after window rewrite:\n")); in sqlite3Select()
6793 SELECTTRACE(0x100,pParse,p, in sqlite3Select()
6807 sqlite3ErrorMsg(pParse, "expected %d columns for '%s' but got %d", in sqlite3Select()
6849 SELECTTRACE(0x100,pParse,p, in sqlite3Select()
6851 sqlite3ParserAddCleanup(pParse, in sqlite3Select()
6884 if( flattenSubquery(pParse, p, i, isAgg) ){ in sqlite3Select()
6885 if( pParse->nErr ) goto select_end; in sqlite3Select()
6902 rc = multiSelect(pParse, p, pDest); in sqlite3Select()
6904 SELECTTRACE(0x1,pParse,p,("end compound-select processing\n")); in sqlite3Select()
6905 if( (sqlite3TreeTrace & 0x2000)!=0 && ExplainQueryPlanParent(pParse)==0 ){ in sqlite3Select()
6909 if( p->pNext==0 ) ExplainQueryPlanPop(pParse); in sqlite3Select()
6922 && propagateConstants(pParse, p) in sqlite3Select()
6926 SELECTTRACE(0x100,pParse,p,("After constant propagation:\n")); in sqlite3Select()
6931 SELECTTRACE(0x100,pParse,p,("Constant propagation not helpful\n")); in sqlite3Select()
6936 && countOfViewOptimization(pParse, p) in sqlite3Select()
6974 sqlite3AuthCheck(pParse, SQLITE_READ, pItem->zName, "", pItem->zDatabase); in sqlite3Select()
6993 pParse->nHeight += sqlite3SelectExprHeight(p); in sqlite3Select()
7001 && pushDownWhereTerms(pParse, pSub, p->pWhere, pItem) in sqlite3Select()
7005 SELECTTRACE(0x100,pParse,p, in sqlite3Select()
7012 SELECTTRACE(0x100,pParse,p,("Push-down not possible\n")); in sqlite3Select()
7015 zSavedAuthContext = pParse->zAuthContext; in sqlite3Select()
7016 pParse->zAuthContext = pItem->zName; in sqlite3Select()
7039 pItem->regReturn = ++pParse->nMem; in sqlite3Select()
7044 ExplainQueryPlan((pParse, 1, "CO-ROUTINE %!S", pItem)); in sqlite3Select()
7045 sqlite3Select(pParse, pSub, &dest); in sqlite3Select()
7051 sqlite3ClearTempRegCache(pParse); in sqlite3Select()
7079 pItem->regReturn = ++pParse->nMem; in sqlite3Select()
7093 ExplainQueryPlan((pParse, 1, "MATERIALIZE %!S", pItem)); in sqlite3Select()
7095 sqlite3Select(pParse, pSub, &dest); in sqlite3Select()
7103 sqlite3ClearTempRegCache(pParse); in sqlite3Select()
7113 pParse->nHeight -= sqlite3SelectExprHeight(p); in sqlite3Select()
7114 pParse->zAuthContext = zSavedAuthContext; in sqlite3Select()
7128 SELECTTRACE(0x400,pParse,p,("After all FROM-clause analysis:\n")); in sqlite3Select()
7165 SELECTTRACE(0x400,pParse,p,("Transform DISTINCT into GROUP BY:\n")); in sqlite3Select()
7182 pParse, sSort.pOrderBy, 0, pEList->nExpr); in sqlite3Select()
7183 sSort.iECursor = pParse->nTab++; in sqlite3Select()
7213 iEnd = sqlite3VdbeMakeLabel(pParse); in sqlite3Select()
7217 if( p->pLimit ) computeLimitRegisters(pParse, p, iEnd); in sqlite3Select()
7226 sDistinct.tabTnct = pParse->nTab++; in sqlite3Select()
7229 (char*)sqlite3KeyInfoFromExprList(pParse, p->pEList,0,0), in sqlite3Select()
7244 sqlite3WindowCodeInit(pParse, p); in sqlite3Select()
7251 SELECTTRACE(1,pParse,p,("WhereBegin\n")); in sqlite3Select()
7252 pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, sSort.pOrderBy, in sqlite3Select()
7268 SELECTTRACE(1,pParse,p,("WhereBegin returns\n")); in sqlite3Select()
7281 int addrGosub = sqlite3VdbeMakeLabel(pParse); in sqlite3Select()
7282 int iCont = sqlite3VdbeMakeLabel(pParse); in sqlite3Select()
7283 int iBreak = sqlite3VdbeMakeLabel(pParse); in sqlite3Select()
7284 int regGosub = ++pParse->nMem; in sqlite3Select()
7286 sqlite3WindowCodeStep(pParse, p, pWInfo, regGosub, addrGosub); in sqlite3Select()
7292 selectInnerLoop(pParse, p, -1, &sSort, &sDistinct, pDest, iCont, iBreak); in sqlite3Select()
7301 selectInnerLoop(pParse, p, -1, &sSort, &sDistinct, pDest, in sqlite3Select()
7307 SELECTTRACE(1,pParse,p,("WhereEnd\n")); in sqlite3Select()
7372 addrEnd = sqlite3VdbeMakeLabel(pParse); in sqlite3Select()
7380 sqlite3ParserAddCleanup(pParse, in sqlite3Select()
7382 testcase( pParse->earlyCleanup ); in sqlite3Select()
7389 sNC.pParse = pParse; in sqlite3Select()
7393 pAggInfo->mnReg = pParse->nMem+1; in sqlite3Select()
7403 havingToWhere(pParse, p); in sqlite3Select()
7427 pAggInfo->mxReg = pParse->nMem; in sqlite3Select()
7432 SELECTTRACE(0x400,pParse,p,("After aggregate analysis %p:\n", pAggInfo)); in sqlite3Select()
7483 pDistinct = sqlite3ExprListAppend(pParse, pDistinct, pExpr); in sqlite3Select()
7492 pAggInfo->sortingIdx = pParse->nTab++; in sqlite3Select()
7493 pKeyInfo = sqlite3KeyInfoFromExprList(pParse, pGroupBy, in sqlite3Select()
7501 iUseFlag = ++pParse->nMem; in sqlite3Select()
7502 iAbortFlag = ++pParse->nMem; in sqlite3Select()
7503 regOutputRow = ++pParse->nMem; in sqlite3Select()
7504 addrOutputRow = sqlite3VdbeMakeLabel(pParse); in sqlite3Select()
7505 regReset = ++pParse->nMem; in sqlite3Select()
7506 addrReset = sqlite3VdbeMakeLabel(pParse); in sqlite3Select()
7507 iAMem = pParse->nMem + 1; in sqlite3Select()
7508 pParse->nMem += pGroupBy->nExpr; in sqlite3Select()
7509 iBMem = pParse->nMem + 1; in sqlite3Select()
7510 pParse->nMem += pGroupBy->nExpr; in sqlite3Select()
7521 SELECTTRACE(1,pParse,p,("WhereBegin\n")); in sqlite3Select()
7522 pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, pGroupBy, pDistinct, in sqlite3Select()
7531 SELECTTRACE(1,pParse,p,("WhereBegin returns\n")); in sqlite3Select()
7549 explainTempTable(pParse, in sqlite3Select()
7563 regBase = sqlite3GetTempRange(pParse, nCol); in sqlite3Select()
7564 sqlite3ExprCodeExprList(pParse, pGroupBy, regBase, 0, 0); in sqlite3Select()
7570 sqlite3ExprCode(pParse, pCol->pCExpr, j + regBase); in sqlite3Select()
7575 regRecord = sqlite3GetTempReg(pParse); in sqlite3Select()
7578 sqlite3ReleaseTempReg(pParse, regRecord); in sqlite3Select()
7579 sqlite3ReleaseTempRange(pParse, regBase, nCol); in sqlite3Select()
7580 SELECTTRACE(1,pParse,p,("WhereEnd\n")); in sqlite3Select()
7582 pAggInfo->sortingIdxPTab = sortPTab = pParse->nTab++; in sqlite3Select()
7583 sortOut = sqlite3GetTempReg(pParse); in sqlite3Select()
7619 sqlite3ExprCode(pParse, pGroupBy->a[j].pExpr, iBMem+j); in sqlite3Select()
7636 sqlite3ExprCodeMove(pParse, iBMem, iAMem, pGroupBy->nExpr); in sqlite3Select()
7648 updateAccumulator(pParse, iUseFlag, pAggInfo, eDist); in sqlite3Select()
7658 SELECTTRACE(1,pParse,p,("WhereEnd\n")); in sqlite3Select()
7690 finalizeAggFunctions(pParse, pAggInfo); in sqlite3Select()
7691 sqlite3ExprIfFalse(pParse, pHaving, addrOutputRow+1, SQLITE_JUMPIFNULL); in sqlite3Select()
7692 selectInnerLoop(pParse, p, -1, &sSort, in sqlite3Select()
7701 resetAccumulator(pParse, pAggInfo); in sqlite3Select()
7708 fixDistinctOpenEph(pParse, eDist, pF->iDistinct, pF->iDistAddr); in sqlite3Select()
7727 const int iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema); in sqlite3Select()
7728 const int iCsr = pParse->nTab++; /* Cursor to scan b-tree */ in sqlite3Select()
7734 sqlite3CodeVerifySchema(pParse, iDb); in sqlite3Select()
7735 sqlite3TableLock(pParse, iDb, pTab->tnum, 0, pTab->zName); in sqlite3Select()
7760 pKeyInfo = sqlite3KeyInfoOfIndex(pParse, pBest); in sqlite3Select()
7770 explainSimpleCount(pParse, pTab, pBest); in sqlite3Select()
7796 regAcc = ++pParse->nMem; in sqlite3Select()
7810 resetAccumulator(pParse, pAggInfo); in sqlite3Select()
7820 SELECTTRACE(1,pParse,p,("WhereBegin\n")); in sqlite3Select()
7821 pWInfo = sqlite3WhereBegin(pParse, pTabList, pWhere, pMinMaxOrderBy, in sqlite3Select()
7826 SELECTTRACE(1,pParse,p,("WhereBegin returns\n")); in sqlite3Select()
7828 updateAccumulator(pParse, regAcc, pAggInfo, eDist); in sqlite3Select()
7832 fixDistinctOpenEph(pParse, eDist, pF->iDistinct, pF->iDistAddr); in sqlite3Select()
7840 SELECTTRACE(1,pParse,p,("WhereEnd\n")); in sqlite3Select()
7842 finalizeAggFunctions(pParse, pAggInfo); in sqlite3Select()
7846 sqlite3ExprIfFalse(pParse, pHaving, addrEnd, SQLITE_JUMPIFNULL); in sqlite3Select()
7847 selectInnerLoop(pParse, p, -1, 0, 0, in sqlite3Select()
7855 explainTempTable(pParse, "DISTINCT"); in sqlite3Select()
7862 explainTempTable(pParse, in sqlite3Select()
7865 generateSortTail(pParse, p, &sSort, pEList->nExpr, pDest); in sqlite3Select()
7874 rc = (pParse->nErr>0); in sqlite3Select()
7881 assert( db->mallocFailed==0 || pParse->nErr!=0 ); in sqlite3Select()
7901 SELECTTRACE(0x1,pParse,p,("end processing\n")); in sqlite3Select()
7902 if( (sqlite3TreeTrace & 0x2000)!=0 && ExplainQueryPlanParent(pParse)==0 ){ in sqlite3Select()
7906 ExplainQueryPlanPop(pParse); in sqlite3Select()