Lines Matching refs:pWin

19442     Window *pWin;          /* EP_WinFunc: Window/Filter defn for a function */  member
19561 ExprHasProperty((p), EP_WinFunc) && p->y.pWin->eFrmType!=TK_FILTER \
19975 Window *pWin; /* List of window functions */ member
20966 SQLITE_PRIVATE void sqlite3WindowLink(Select *pSel, Window *pWin);
33454 if( p->pWin ) n++; in sqlite3TreeViewSelect()
33463 if( p->pWin ){ in sqlite3TreeViewSelect()
33467 for(pX=p->pWin; pX; pX=pX->pNextWin){ in sqlite3TreeViewSelect()
33570 SQLITE_PRIVATE void sqlite3TreeViewWindow(TreeView *pView, const Window *pWin, u8 more){ in sqlite3TreeViewWindow() argument
33572 if( pWin==0 ) return; in sqlite3TreeViewWindow()
33573 if( pWin->pFilter ){ in sqlite3TreeViewWindow()
33575 sqlite3TreeViewExpr(pView, pWin->pFilter, 0); in sqlite3TreeViewWindow()
33577 if( pWin->eFrmType==TK_FILTER ) return; in sqlite3TreeViewWindow()
33580 if( pWin->zName ){ in sqlite3TreeViewWindow()
33581 sqlite3TreeViewLine(pView, "OVER %s (%p)", pWin->zName, pWin); in sqlite3TreeViewWindow()
33583 sqlite3TreeViewLine(pView, "OVER (%p)", pWin); in sqlite3TreeViewWindow()
33585 if( pWin->zBase ) nElement++; in sqlite3TreeViewWindow()
33586 if( pWin->pOrderBy ) nElement++; in sqlite3TreeViewWindow()
33587 if( pWin->eFrmType!=0 && pWin->eFrmType!=TK_FILTER ) nElement++; in sqlite3TreeViewWindow()
33588 if( pWin->eExclude ) nElement++; in sqlite3TreeViewWindow()
33589 if( pWin->zBase ){ in sqlite3TreeViewWindow()
33591 sqlite3TreeViewLine(pView, "window: %s", pWin->zBase); in sqlite3TreeViewWindow()
33594 if( pWin->pPartition ){ in sqlite3TreeViewWindow()
33595 sqlite3TreeViewExprList(pView, pWin->pPartition, nElement>0,"PARTITION-BY"); in sqlite3TreeViewWindow()
33597 if( pWin->pOrderBy ){ in sqlite3TreeViewWindow()
33598 sqlite3TreeViewExprList(pView, pWin->pOrderBy, (--nElement)>0, "ORDER-BY"); in sqlite3TreeViewWindow()
33600 if( pWin->eFrmType!=0 && pWin->eFrmType!=TK_FILTER ){ in sqlite3TreeViewWindow()
33603 if( pWin->eFrmType==TK_RANGE ) zFrmType = "RANGE"; in sqlite3TreeViewWindow()
33604 if( pWin->eFrmType==TK_GROUPS ) zFrmType = "GROUPS"; in sqlite3TreeViewWindow()
33606 pWin->bImplicitFrame ? " (implied)" : ""); in sqlite3TreeViewWindow()
33608 sqlite3TreeViewBound(pView, pWin->eStart, pWin->pStart, 1); in sqlite3TreeViewWindow()
33609 sqlite3TreeViewBound(pView, pWin->eEnd, pWin->pEnd, 0); in sqlite3TreeViewWindow()
33612 if( pWin->eExclude ){ in sqlite3TreeViewWindow()
33615 switch( pWin->eExclude ){ in sqlite3TreeViewWindow()
33621 sqlite3_snprintf(sizeof(zBuf),zBuf,"invalid(%d)", pWin->eExclude); in sqlite3TreeViewWindow()
33637 SQLITE_PRIVATE void sqlite3TreeViewWinFunc(TreeView *pView, const Window *pWin, u8 more){ in sqlite3TreeViewWinFunc() argument
33638 if( pWin==0 ) return; in sqlite3TreeViewWinFunc()
33641 pWin->pWFunc->zName, pWin->pWFunc->nArg); in sqlite3TreeViewWinFunc()
33642 sqlite3TreeViewWindow(pView, pWin, 0); in sqlite3TreeViewWinFunc()
33840 Window *pWin; in sqlite3TreeViewExpr() local
33843 pWin = 0; in sqlite3TreeViewExpr()
33848 pWin = IsWindowFunc(pExpr) ? pExpr->y.pWin : 0; in sqlite3TreeViewExpr()
33850 pWin = 0; in sqlite3TreeViewExpr()
33874 sqlite3TreeViewExprList(pView, pFarg, pWin!=0 || pExpr->pLeft, 0); in sqlite3TreeViewExpr()
33879 sqlite3TreeViewExprList(pView, pOB->x.pList, pWin!=0, "ORDERBY"); in sqlite3TreeViewExpr()
33883 if( pWin ){ in sqlite3TreeViewExpr()
33884 sqlite3TreeViewWindow(pView, pWin, 0); in sqlite3TreeViewExpr()
107796 Window *pWin;
107797 for(pWin=pList; pWin; pWin=pWin->pNextWin){
107799 rc = sqlite3WalkExprList(pWalker, pWin->pOrderBy);
107801 rc = sqlite3WalkExprList(pWalker, pWin->pPartition);
107803 rc = sqlite3WalkExpr(pWalker, pWin->pFilter);
107805 rc = sqlite3WalkExpr(pWalker, pWin->pStart);
107807 rc = sqlite3WalkExpr(pWalker, pWin->pEnd);
107859 if( walkWindowList(pWalker, pExpr->y.pWin, 1) ) return WRC_Abort;
108134 if( ALWAYS(pExpr->y.pWin!=0) ){
108135 pExpr->y.pWin->pOwner = pExpr;
109154 Window *pWin = (IsWindowFunc(pExpr) ? pExpr->y.pWin : 0);
109271 if( pDef && pDef->xValue==0 && pWin ){
109278 || (is_agg && (pDef->funcFlags&SQLITE_FUNC_WINDOW) && !pWin)
109279 || (is_agg && pWin && (pNC->ncFlags & NC_AllowWin)==0)
109282 if( (pDef->funcFlags & SQLITE_FUNC_WINDOW) || pWin ){
109328 pNC->ncFlags &= ~(NC_AllowWin | (!pWin ? NC_AllowAgg : 0));
109345 if( pWin && pParse->nErr==0 ){
109347 assert( ExprUseYWin(pExpr) && pWin==pExpr->y.pWin );
109349 sqlite3WindowUpdate(pParse, pSel ? pSel->pWinDefn : 0, pWin, pDef);
109352 sqlite3WalkExprList(pWalker, pWin->pPartition);
109353 sqlite3WalkExprList(pWalker, pWin->pOrderBy);
109354 sqlite3WalkExpr(pWalker, pWin->pFilter);
109355 sqlite3WindowLink(pSel, pWin);
109365 sqlite3WalkExpr(pWalker, pExpr->y.pWin->pFilter);
109767 Window *pWin = pExpr->y.pWin;
109768 sqlite3WindowUnlinkFromSelect(pWin);
109778 if( pSelect->pWin ){
110033 Window *pWin;
110034 for(pWin=p->pWinDefn; pWin; pWin=pWin->pNextWin){
110035 if( sqlite3ResolveExprListNames(&sNC, pWin->pOrderBy)
110036 || sqlite3ResolveExprListNames(&sNC, pWin->pPartition)
111725 assert( !ExprUseYWin(p) || p->y.pWin!=0 || db->mallocFailed );
111748 sqlite3WindowDelete(db, p->y.pWin);
112045 pNew->y.pWin = sqlite3WindowDup(db, pNew, p->y.pWin);
112119 Window *pWin = pExpr->y.pWin;
112120 assert( pWin );
112122 assert( pWin->ppThis==0 );
112123 sqlite3WindowLink(pSelect, pWin);
112319 pNew->pWin = 0;
112321 if( p->pWin && db->mallocFailed==0 ) gatherSelectWindows(pNew);
115451 return pExpr->y.pWin->regResult;
116656 if( sqlite3WindowCompare(pParse, pA->y.pWin, pB->y.pWin, 1)!=0 ){
117269 sqlite3WalkExpr(&w, pExpr->y.pWin->pFilter);
144937 while( p->pWin ){
144938 assert( p->pWin->ppThis==&p->pWin );
144939 sqlite3WindowUnlinkFromSelect(p->pWin);
145007 pNew->pWin = 0;
147530 if( p->pWin ){
147695 if( p->pWin ) return -1;
148826 Window *pWin = pExpr->y.pWin;
148827 pWin->pFilter = substExpr(pSubst, pWin->pFilter);
148828 substExprList(pSubst, pWin->pPartition);
148829 substExprList(pSubst, pWin->pOrderBy);
149255 if( p->pWin || pSub->pWin ) return 0; /* Restriction (25) */
149344 || pSub1->pWin /* (17e) */
149950 assert( pSubq->pWin->pPartition );
149953 return sqlite3ExprIsConstantOrGroupBy(pParse, pExpr, pSubq->pWin->pPartition);
150097 if( pSel->pWin ) return 0; /* restriction (6b) */
150118 if( pSubq->pWin && pSubq->pWin->pPartition==0 ) return 0;
150201 if( pSubq->pWin && 0==pushDownWindowCheck(pParse, pSubq, pNew) ){
150257 if( pX->pWin ){
151466 sqlite3ExprAnalyzeAggregates(pNC, pExpr->y.pWin->pFilter);
151757 Expr *pFilter = pF->pFExpr->y.pWin->pFilter;
152384 if( p->pWin && (sqlite3TreeTrace & 0x40)!=0 ){
152857 && p->pWin==0
152954 Window *pWin = p->pWin; /* Main window object (or NULL) */
152955 if( pWin ){
152998 if( pWin ){
164039 && pExpr->x.pSelect->pWin==0
164363 assert( p->y.pWin!=0 );
164364 mask |= sqlite3WhereExprListUsage(pMaskSet, p->y.pWin->pPartition);
164365 mask |= sqlite3WhereExprListUsage(pMaskSet, p->y.pWin->pOrderBy);
164366 mask |= sqlite3WhereExprUsage(pMaskSet, p->y.pWin->pFilter);
172816 Window *pWin, /* Window frame to update */
172819 if( pWin->zName && pWin->eFrmType==0 ){
172820 Window *p = windowFind(pParse, pList, pWin->zName);
172822 pWin->pPartition = sqlite3ExprListDup(pParse->db, p->pPartition, 0);
172823 pWin->pOrderBy = sqlite3ExprListDup(pParse->db, p->pOrderBy, 0);
172824 pWin->pStart = sqlite3ExprDup(pParse->db, p->pStart, 0);
172825 pWin->pEnd = sqlite3ExprDup(pParse->db, p->pEnd, 0);
172826 pWin->eStart = p->eStart;
172827 pWin->eEnd = p->eEnd;
172828 pWin->eFrmType = p->eFrmType;
172829 pWin->eExclude = p->eExclude;
172831 sqlite3WindowChain(pParse, pWin, pList);
172833 if( (pWin->eFrmType==TK_RANGE)
172834 && (pWin->pStart || pWin->pEnd)
172835 && (pWin->pOrderBy==0 || pWin->pOrderBy->nExpr!=1)
172843 if( pWin->pFilter ){
172866 sqlite3ExprDelete(db, pWin->pStart);
172867 sqlite3ExprDelete(db, pWin->pEnd);
172868 pWin->pEnd = pWin->pStart = 0;
172869 pWin->eFrmType = aUp[i].eFrmType;
172870 pWin->eStart = aUp[i].eStart;
172871 pWin->eEnd = aUp[i].eEnd;
172872 pWin->eExclude = 0;
172873 if( pWin->eStart==TK_FOLLOWING ){
172874 pWin->pStart = sqlite3Expr(db, TK_INTEGER, "1");
172881 pWin->pWFunc = pFunc;
172890 Window *pWin;
172906 assert( p->pWin!=0 );
172932 Window *pWin;
172933 for(pWin=p->pWin; pWin; pWin=pWin->pNextWin){
172934 if( pExpr->y.pWin==pWin ){
172935 assert( pWin->pOwner==pExpr );
172971 pExpr->iTable = p->pWin->iEphCsr;
173014 Window *pWin,
173023 assert( pWin!=0 );
173028 sRewrite.pWin = pWin;
173114 if( p->pWin
173129 Window *pMWin = p->pWin; /* Main window object */
173130 Window *pWin; /* Window object iterator */
173190 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
173192 assert( ExprUseXList(pWin->pOwner) );
173193 assert( pWin->pWFunc!=0 );
173194 pArgs = pWin->pOwner->x.pList;
173195 if( pWin->pWFunc->funcFlags & SQLITE_SUBTYPE ){
173197 pWin->iArgCol = (pSublist ? pSublist->nExpr : 0);
173198 pWin->bExprArgs = 1;
173200 pWin->iArgCol = (pSublist ? pSublist->nExpr : 0);
173203 if( pWin->pFilter ){
173204 Expr *pFilter = sqlite3ExprDup(db, pWin->pFilter, 0);
173207 pWin->regAccum = ++pParse->nMem;
173208 pWin->regResult = ++pParse->nMem;
173209 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regAccum);
173340 Window *pWin = 0;
173378 pWin = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
173379 if( pWin==0 ) goto windowAllocErr;
173380 pWin->eFrmType = eType;
173381 pWin->eStart = eStart;
173382 pWin->eEnd = eEnd;
173386 pWin->eExclude = eExclude;
173387 pWin->bImplicitFrame = bImplicitFrame;
173388 pWin->pEnd = sqlite3WindowOffsetExpr(pParse, pEnd);
173389 pWin->pStart = sqlite3WindowOffsetExpr(pParse, pStart);
173390 return pWin;
173405 Window *pWin,
173410 if( pWin ){
173411 pWin->pPartition = pPartition;
173412 pWin->pOrderBy = pOrderBy;
173414 pWin->zBase = sqlite3DbStrNDup(pParse->db, pBase->z, pBase->n);
173420 return pWin;
173430 SQLITE_PRIVATE void sqlite3WindowChain(Parse *pParse, Window *pWin, Window *pList){
173431 if( pWin->zBase ){
173433 Window *pExist = windowFind(pParse, pList, pWin->zBase);
173437 if( pWin->pPartition ){
173439 }else if( pExist->pOrderBy && pWin->pOrderBy ){
173446 "cannot override %s of window: %s", zErr, pWin->zBase
173449 pWin->pPartition = sqlite3ExprListDup(db, pExist->pPartition, 0);
173451 assert( pWin->pOrderBy==0 );
173452 pWin->pOrderBy = sqlite3ExprListDup(db, pExist->pOrderBy, 0);
173454 sqlite3DbFree(db, pWin->zBase);
173455 pWin->zBase = 0;
173464 SQLITE_PRIVATE void sqlite3WindowAttach(Parse *pParse, Expr *p, Window *pWin){
173467 assert( pWin );
173469 p->y.pWin = pWin;
173471 pWin->pOwner = p;
173472 if( (p->flags & EP_Distinct) && pWin->eFrmType!=TK_FILTER ){
173478 sqlite3WindowDelete(pParse->db, pWin);
173488 SQLITE_PRIVATE void sqlite3WindowLink(Select *pSel, Window *pWin){
173490 if( 0==pSel->pWin || 0==sqlite3WindowCompare(0, pSel->pWin, pWin, 0) ){
173491 pWin->pNextWin = pSel->pWin;
173492 if( pSel->pWin ){
173493 pSel->pWin->ppThis = &pWin->pNextWin;
173495 pSel->pWin = pWin;
173496 pWin->ppThis = &pSel->pWin;
173498 if( sqlite3ExprListCompare(pWin->pPartition, pSel->pWin->pPartition,-1) ){
173545 Window *pWin;
173552 pMWin = pSelect->pWin;
173582 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
173583 FuncDef *p = pWin->pWFunc;
173584 if( (p->funcFlags & SQLITE_FUNC_MINMAX) && pWin->eStart!=TK_UNBOUNDED ){
173594 assert( ExprUseXList(pWin->pOwner) );
173595 pList = pWin->pOwner->x.pList;
173597 pWin->csrApp = pParse->nTab++;
173598 pWin->regApp = pParse->nMem+1;
173600 if( pKeyInfo && pWin->pWFunc->zName[1]=='i' ){
173604 sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pWin->csrApp, 2);
173606 sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp+1);
173611 pWin->regApp = pParse->nMem+1;
173612 pWin->csrApp = pParse->nTab++;
173614 sqlite3VdbeAddOp2(v, OP_OpenDup, pWin->csrApp, pMWin->iEphCsr);
173617 pWin->csrApp = pParse->nTab++;
173618 sqlite3VdbeAddOp2(v, OP_OpenDup, pWin->csrApp, pMWin->iEphCsr);
173683 static int windowArgCount(Window *pWin){
173685 assert( ExprUseXList(pWin->pOwner) );
173686 pList = pWin->pOwner->x.pList;
173821 Window *pWin;
173822 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
173823 FuncDef *pFunc = pWin->pWFunc;
173825 int nArg = pWin->bExprArgs ? 0 : windowArgCount(pWin);
173829 assert( bInverse==0 || pWin->eStart!=TK_UNBOUNDED );
173833 assert( pWin==pMWin || sqlite3WindowCompare(pParse,pWin,pMWin,0)!=1 );
173837 sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol+i, reg+i);
173839 sqlite3VdbeAddOp3(v, OP_Column, pMWin->iEphCsr, pWin->iArgCol+i, reg+i);
173844 if( pWin->pFilter ){
173846 assert( ExprUseXList(pWin->pOwner) );
173847 assert( pWin->bExprArgs || !nArg ||nArg==pWin->pOwner->x.pList->nExpr );
173848 assert( pWin->bExprArgs || nArg ||pWin->pOwner->x.pList==0 );
173850 sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol+nArg,regTmp);
173858 && (pWin->eStart!=TK_UNBOUNDED)
173863 sqlite3VdbeAddOp2(v, OP_AddImm, pWin->regApp+1, 1);
173864 sqlite3VdbeAddOp2(v, OP_SCopy, regArg, pWin->regApp);
173865 sqlite3VdbeAddOp3(v, OP_MakeRecord, pWin->regApp, 2, pWin->regApp+2);
173866 sqlite3VdbeAddOp2(v, OP_IdxInsert, pWin->csrApp, pWin->regApp+2);
173868 sqlite3VdbeAddOp4Int(v, OP_SeekGE, pWin->csrApp, 0, regArg, 1);
173870 sqlite3VdbeAddOp1(v, OP_Delete, pWin->csrApp);
173874 }else if( pWin->regApp ){
173875 assert( pWin->pFilter==0 );
173880 sqlite3VdbeAddOp2(v, OP_AddImm, pWin->regApp+1-bInverse, 1);
173882 if( pWin->bExprArgs ){
173886 assert( ExprUseXList(pWin->pOwner) );
173887 nArg = pWin->pOwner->x.pList->nExpr;
173889 sqlite3ExprCodeExprList(pParse, pWin->pOwner->x.pList, regArg, 0, 0);
173901 assert( ExprUseXList(pWin->pOwner) );
173902 pColl = sqlite3ExprNNCollSeq(pParse, pWin->pOwner->x.pList->a[0].pExpr);
173906 bInverse, regArg, pWin->regAccum);
173909 if( pWin->bExprArgs ){
173935 Window *pWin;
173937 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
173939 && (pWin->pWFunc->funcFlags & SQLITE_FUNC_MINMAX)
173940 && (pWin->eStart!=TK_UNBOUNDED)
173942 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regResult);
173943 sqlite3VdbeAddOp1(v, OP_Last, pWin->csrApp);
173945 sqlite3VdbeAddOp3(v, OP_Column, pWin->csrApp, 0, pWin->regResult);
173947 }else if( pWin->regApp ){
173950 int nArg = windowArgCount(pWin);
173952 sqlite3VdbeAddOp2(v, OP_AggFinal, pWin->regAccum, nArg);
173953 sqlite3VdbeAppendP4(v, pWin->pWFunc, P4_FUNCDEF);
173954 sqlite3VdbeAddOp2(v, OP_Copy, pWin->regAccum, pWin->regResult);
173955 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regAccum);
173957 sqlite3VdbeAddOp3(v, OP_AggValue,pWin->regAccum,nArg,pWin->regResult);
173958 sqlite3VdbeAppendP4(v, pWin->pWFunc, P4_FUNCDEF);
173971 Window *pWin;
174006 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
174007 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regAccum);
174084 Window *pWin;
174086 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
174087 FuncDef *pFunc = pWin->pWFunc;
174088 assert( ExprUseXList(pWin->pOwner) );
174092 int csr = pWin->csrApp;
174095 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regResult);
174098 sqlite3VdbeAddOp3(v, OP_Column,pMWin->iEphCsr,pWin->iArgCol+1,tmpReg);
174103 sqlite3VdbeAddOp3(v, OP_Add, tmpReg, pWin->regApp, tmpReg);
174104 sqlite3VdbeAddOp3(v, OP_Gt, pWin->regApp+1, lbl, tmpReg);
174108 sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol, pWin->regResult);
174113 int nArg = pWin->pOwner->x.pList->nExpr;
174114 int csr = pWin->csrApp;
174120 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regResult);
174122 sqlite3VdbeAddOp3(v, OP_Column, iEph,pWin->iArgCol+2,pWin->regResult);
174131 sqlite3VdbeAddOp3(v, OP_Column, iEph, pWin->iArgCol+1, tmpReg2);
174138 sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol, pWin->regResult);
174157 Window *pWin;
174158 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
174159 FuncDef *pFunc = pWin->pWFunc;
174160 assert( pWin->regAccum );
174161 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regAccum);
174162 nArg = MAX(nArg, windowArgCount(pWin));
174165 sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp);
174166 sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp+1);
174169 if( (pFunc->funcFlags & SQLITE_FUNC_MINMAX) && pWin->csrApp ){
174170 assert( pWin->eStart!=TK_UNBOUNDED );
174171 sqlite3VdbeAddOp1(v, OP_ResetSorter, pWin->csrApp);
174172 sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp+1);
174186 Window *pWin;
174188 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
174189 FuncDef *pFunc = pWin->pWFunc;
174572 Window *pWin;
174576 for(pWin=p; pWin; pWin=pWin->pNextWin){
174577 *pp = sqlite3WindowDup(db, 0, pWin);
174947 Window *pMWin = p->pWin;