Lines Matching refs:pAggInfo

19021   AggInfo *pAggInfo;     /* Used by TK_AGG_COLUMN and TK_AGG_FUNCTION */  member
19401 AggInfo *pAggInfo; /* Information about aggregates at this level */ member
33086 if( pExpr->flags || pExpr->affExpr || pExpr->vvaFlags || pExpr->pAggInfo ){ in sqlite3TreeViewExpr()
33103 if( pExpr->pAggInfo!=0 ){ in sqlite3TreeViewExpr()
33283 pExpr->pAggInfo ? pExpr->pAggInfo->selId : 0, in sqlite3TreeViewExpr()
33284 pExpr->iAgg, pExpr->pAggInfo); in sqlite3TreeViewExpr()
106807 if( pExpr->pAggInfo ) return;
113566 AggInfo *pAggInfo = pExpr->pAggInfo;
113568 assert( pAggInfo!=0 );
113570 if( pExpr->iAgg>=pAggInfo->nColumn ){
113582 pCol = &pAggInfo->aCol[pExpr->iAgg];
113583 if( !pAggInfo->directMode ){
113584 return AggInfoColumnReg(pAggInfo, pExpr->iAgg);
113585 }else if( pAggInfo->useSortingIdx ){
113587 sqlite3VdbeAddOp3(v, OP_Column, pAggInfo->sortingIdxPTab,
113891 AggInfo *pInfo = pExpr->pAggInfo;
114188 AggInfo *pAggInfo = pExpr->pAggInfo;
114189 if( pAggInfo ){
114190 assert( pExpr->iAgg>=0 && pExpr->iAgg<pAggInfo->nColumn );
114191 if( !pAggInfo->directMode ){
114192 inReg = AggInfoColumnReg(pAggInfo, pExpr->iAgg);
114195 if( pExpr->pAggInfo->useSortingIdx ){
114196 sqlite3VdbeAddOp3(v, OP_Column, pAggInfo->sortingIdxPTab,
114197 pAggInfo->aCol[pExpr->iAgg].iSorterColumn,
115683 && pExpr->pAggInfo!=0
115685 AggInfo *pAggInfo = pExpr->pAggInfo;
115691 if( iAgg<pAggInfo->nColumn
115692 && pAggInfo->aCol[iAgg].pCExpr==pExpr
115696 pAggInfo->aCol[iAgg].pCExpr = pExpr;
115701 if( ALWAYS(iAgg<pAggInfo->nFunc)
115702 && pAggInfo->aFunc[iAgg].pFExpr==pExpr
115706 pAggInfo->aFunc[iAgg].pFExpr = pExpr;
115766 AggInfo *pAggInfo, /* The AggInfo object to search and/or modify */
115772 assert( pAggInfo->iFirstReg==0 );
115773 pCol = pAggInfo->aCol;
115774 for(k=0; k<pAggInfo->nColumn; k++, pCol++){
115783 k = addAggInfoColumn(pParse->db, pAggInfo);
115789 pCol = &pAggInfo->aCol[k];
115796 if( pAggInfo->pGroupBy && pExpr->op!=TK_IF_NULL_ROW ){
115798 ExprList *pGB = pAggInfo->pGroupBy;
115813 pCol->iSorterColumn = pAggInfo->nSortingColumn++;
115817 assert( pExpr->pAggInfo==0 || pExpr->pAggInfo==pAggInfo );
115818 pExpr->pAggInfo = pAggInfo;
115835 AggInfo *pAggInfo = pNC->uNC.pAggInfo;
115838 assert( pAggInfo->iFirstReg==0 );
115857 if( NEVER(pExpr->pAggInfo!=0) ) break; /* Resolved by outer context */
115868 findOrCreateAggInfoColumn(pParse, pAggInfo, &tmp);
115870 assert( pAggInfo->aCol!=0 );
115871 assert( tmp.iAgg<pAggInfo->nColumn );
115872 pAggInfo->aCol[tmp.iAgg].pCExpr = pExpr;
115873 pExpr->pAggInfo = pAggInfo;
115890 findOrCreateAggInfoColumn(pParse, pAggInfo, pExpr);
115900 && pExpr->pAggInfo==0
115905 struct AggInfo_func *pItem = pAggInfo->aFunc;
115906 for(i=0; i<pAggInfo->nFunc; i++, pItem++){
115912 if( i>=pAggInfo->nFunc ){
115916 i = addAggInfoFunc(pParse->db, pAggInfo);
115920 pItem = &pAggInfo->aFunc[i];
115967 pExpr->pAggInfo = pAggInfo;
148347 static Table *isSimpleCount(Select *p, AggInfo *pAggInfo){
148357 || pAggInfo->nFunc!=1
148369 if( pExpr->pAggInfo!=pAggInfo ) return 0;
148370 if( (pAggInfo->aFunc[0].pFunc->funcFlags&SQLITE_FUNC_COUNT)==0 ) return 0;
148371 assert( pAggInfo->aFunc[0].pFExpr==pExpr );
149373 static void printAggInfo(AggInfo *pAggInfo){
149376 pAggInfo->selId, pAggInfo);
149377 for(ii=0; ii<pAggInfo->nColumn; ii++){
149378 struct AggInfo_col *pCol = &pAggInfo->aCol[ii];
149383 pCol->iTable, pCol->iColumn, pAggInfo->iFirstReg+ii,
149385 ii>=pAggInfo->nAccumulator ? "" : " Accumulator");
149386 sqlite3TreeViewExpr(0, pAggInfo->aCol[ii].pCExpr, 0);
149388 for(ii=0; ii<pAggInfo->nFunc; ii++){
149390 ii, pAggInfo->iFirstReg+pAggInfo->nColumn+ii);
149391 sqlite3TreeViewExpr(0, pAggInfo->aFunc[ii].pFExpr, 0);
149414 AggInfo *pAggInfo,
149418 assert( pAggInfo!=0 );
149419 assert( pAggInfo->iFirstReg==0 );
149421 for(i=0; i<pAggInfo->nFunc; i++){
149422 Expr *pExpr = pAggInfo->aFunc[i].pFExpr;
149451 AggInfo *pAggInfo, /* The aggregate info */
149454 assert( pAggInfo->iFirstReg==0 );
149457 pAggInfo->nColumn = pAggInfo->nAccumulator;
149458 if( ALWAYS(pAggInfo->nSortingColumn>0) ){
149461 for(j=0; j<pAggInfo->nColumn; j++){
149462 k = pAggInfo->aCol[j].iSorterColumn;
149465 pAggInfo->nSortingColumn = mx+1;
149467 analyzeAggFuncArgs(pAggInfo, pNC);
149479 printAggInfo(pAggInfo);
149491 AggInfo *pAggInfo;
149494 if( pExpr->pAggInfo==0 ) return WRC_Continue;
149498 pAggInfo = pExpr->pAggInfo;
149499 if( NEVER(pExpr->iAgg>=pAggInfo->nColumn) ) return WRC_Continue;
149501 pCol = &pAggInfo->aCol[pExpr->iAgg];
149514 static void aggregateConvertIndexedExprRefToColumn(AggInfo *pAggInfo){
149519 for(i=0; i<pAggInfo->nFunc; i++){
149520 sqlite3WalkExpr(&w, pAggInfo->aFunc[i].pFExpr);
149542 static void assignAggregateRegisters(Parse *pParse, AggInfo *pAggInfo){
149543 assert( pAggInfo!=0 );
149544 assert( pAggInfo->iFirstReg==0 );
149545 pAggInfo->iFirstReg = pParse->nMem + 1;
149546 pParse->nMem += pAggInfo->nColumn + pAggInfo->nFunc;
149557 static void resetAccumulator(Parse *pParse, AggInfo *pAggInfo){
149561 int nReg = pAggInfo->nFunc + pAggInfo->nColumn;
149562 assert( pAggInfo->iFirstReg>0 );
149567 sqlite3VdbeAddOp3(v, OP_Null, 0, pAggInfo->iFirstReg,
149568 pAggInfo->iFirstReg+nReg-1);
149569 for(pFunc=pAggInfo->aFunc, i=0; i<pAggInfo->nFunc; i++, pFunc++){
149622 static void finalizeAggFunctions(Parse *pParse, AggInfo *pAggInfo){
149626 for(i=0, pF=pAggInfo->aFunc; i<pAggInfo->nFunc; i++, pF++){
149667 sqlite3VdbeAddOp3(v, OP_AggStep, 0, regAgg, AggInfoFuncReg(pAggInfo,i));
149674 sqlite3VdbeAddOp2(v, OP_AggFinal, AggInfoFuncReg(pAggInfo,i),
149699 AggInfo *pAggInfo,
149709 assert( pAggInfo->iFirstReg>0 );
149711 pAggInfo->directMode = 1;
149712 for(i=0, pF=pAggInfo->aFunc; i<pAggInfo->nFunc; i++, pF++){
149725 if( pAggInfo->nAccumulator
149826 if( regHit==0 && pAggInfo->nAccumulator ) regHit = ++pParse->nMem;
149830 sqlite3VdbeAddOp3(v, OP_AggStep, 0, regAgg, AggInfoFuncReg(pAggInfo,i));
149839 if( regHit==0 && pAggInfo->nAccumulator ){
149845 for(i=0, pC=pAggInfo->aCol; i<pAggInfo->nAccumulator; i++, pC++){
149846 sqlite3ExprCode(pParse, pC->pCExpr, AggInfoColumnReg(pAggInfo,i));
149849 pAggInfo->directMode = 0;
149901 && pExpr->pAggInfo==0
150204 AggInfo *pAggInfo = 0; /* Aggregate information */
150969 pAggInfo = sqlite3DbMallocZero(db, sizeof(*pAggInfo) );
150970 if( pAggInfo ){
150971 sqlite3ParserAddCleanup(pParse, agginfoFree, pAggInfo);
150977 pAggInfo->selId = p->selId;
150979 pAggInfo->pSelect = p;
150984 sNC.uNC.pAggInfo = pAggInfo;
150986 pAggInfo->nSortingColumn = pGroupBy ? pGroupBy->nExpr : 0;
150987 pAggInfo->pGroupBy = pGroupBy;
151000 pAggInfo->nAccumulator = pAggInfo->nColumn;
151001 if( p->pGroupBy==0 && p->pHaving==0 && pAggInfo->nFunc==1 ){
151002 minMaxFlag = minMaxQuery(db, pAggInfo->aFunc[0].pFExpr, &pMinMaxOrderBy);
151006 analyzeAggFuncArgs(pAggInfo, &sNC);
151010 TREETRACE(0x20,pParse,p,("After aggregate analysis %p:\n", pAggInfo));
151016 printAggInfo(pAggInfo);
151038 if( pAggInfo->nFunc==1
151039 && pAggInfo->aFunc[0].iDistinct>=0
151040 && ALWAYS(pAggInfo->aFunc[0].pFExpr!=0)
151041 && ALWAYS(ExprUseXList(pAggInfo->aFunc[0].pFExpr))
151042 && pAggInfo->aFunc[0].pFExpr->x.pList!=0
151044 Expr *pExpr = pAggInfo->aFunc[0].pFExpr->x.pList->a[0].pExpr;
151056 pAggInfo->sortingIdx = pParse->nTab++;
151058 0, pAggInfo->nColumn);
151060 pAggInfo->sortingIdx, pAggInfo->nSortingColumn,
151095 optimizeAggregateUseOfIndexedExpr(pParse, p, pAggInfo, &sNC);
151097 assignAggregateRegisters(pParse, pAggInfo);
151129 for(i=0; i<pAggInfo->nColumn; i++){
151130 if( pAggInfo->aCol[i].iSorterColumn>=j ){
151138 pAggInfo->directMode = 1;
151139 for(i=0; i<pAggInfo->nColumn; i++){
151140 struct AggInfo_col *pCol = &pAggInfo->aCol[i];
151146 pAggInfo->directMode = 0;
151150 sqlite3VdbeAddOp2(v, OP_SorterInsert, pAggInfo->sortingIdx, regRecord);
151156 pAggInfo->sortingIdxPTab = sortPTab = pParse->nTab++;
151160 sqlite3VdbeAddOp2(v, OP_SorterSort, pAggInfo->sortingIdx, addrEnd);
151162 pAggInfo->useSortingIdx = 1;
151164 sqlite3VdbeScanStatusRange(v, addrExp, -1, pAggInfo->sortingIdx);
151173 aggregateConvertIndexedExprRefToColumn(pAggInfo);
151179 printAggInfo(pAggInfo);
151205 sqlite3VdbeAddOp3(v, OP_SorterData, pAggInfo->sortingIdx,
151212 pAggInfo->directMode = 1;
151242 updateAccumulator(pParse, iUseFlag, pAggInfo, eDist);
151249 sqlite3VdbeAddOp2(v, OP_SorterNext, pAggInfo->sortingIdx,addrTopOfLoop);
151284 finalizeAggFunctions(pParse, pAggInfo);
151295 resetAccumulator(pParse, pAggInfo);
151301 struct AggInfo_func *pF = &pAggInfo->aFunc[0];
151307 if( (pTab = isSimpleCount(p, pAggInfo))!=0 ){
151362 assignAggregateRegisters(pParse, pAggInfo);
151363 sqlite3VdbeAddOp2(v, OP_Count, iCsr, AggInfoFuncReg(pAggInfo,0));
151381 if( pAggInfo->nAccumulator ){
151382 for(i=0; i<pAggInfo->nFunc; i++){
151383 if( ExprHasProperty(pAggInfo->aFunc[i].pFExpr, EP_WinFunc) ){
151386 if( pAggInfo->aFunc[i].pFunc->funcFlags&SQLITE_FUNC_NEEDCOLL ){
151390 if( i==pAggInfo->nFunc ){
151394 }else if( pAggInfo->nFunc==1 && pAggInfo->aFunc[0].iDistinct>=0 ){
151395 assert( ExprUseXList(pAggInfo->aFunc[0].pFExpr) );
151396 pDistinct = pAggInfo->aFunc[0].pFExpr->x.pList;
151399 assignAggregateRegisters(pParse, pAggInfo);
151406 resetAccumulator(pParse, pAggInfo);
151424 updateAccumulator(pParse, regAcc, pAggInfo, eDist);
151426 struct AggInfo_func *pF = pAggInfo->aFunc;
151438 finalizeAggFunctions(pParse, pAggInfo);
151478 if( pAggInfo && !db->mallocFailed ){
151482 printAggInfo(pAggInfo);
151485 for(i=0; i<pAggInfo->nColumn; i++){
151486 Expr *pExpr = pAggInfo->aCol[i].pCExpr;
151488 assert( pExpr->pAggInfo==pAggInfo );
151491 for(i=0; i<pAggInfo->nFunc; i++){
151492 Expr *pExpr = pAggInfo->aFunc[i].pFExpr;
151494 assert( pExpr->pAggInfo==pAggInfo );
158441 }else if( pExpr->pAggInfo ){
170290 if( pExpr->op==TK_AGG_FUNCTION && pExpr->pAggInfo==0 ){
172626 p->pAggInfo = 0;