Lines Matching refs:pWin

17413     Window *pWin;          /* TK_FUNCTION: Window definition for the func */  member
17780 Window *pWin; /* List of window functions */ member
28714 if( p->pWin ) n++;
28720 if( p->pWin ){
28724 for(pX=p->pWin; pX; pX=pX->pNextWin){
28827 SQLITE_PRIVATE void sqlite3TreeViewWindow(TreeView *pView, const Window *pWin, u8 more){
28829 if( pWin->pFilter ){
28831 sqlite3TreeViewExpr(pView, pWin->pFilter, 0);
28835 if( pWin->zName ){
28836 sqlite3TreeViewLine(pView, "OVER %s (%p)", pWin->zName, pWin);
28838 sqlite3TreeViewLine(pView, "OVER (%p)", pWin);
28840 if( pWin->zBase ) nElement++;
28841 if( pWin->pOrderBy ) nElement++;
28842 if( pWin->eFrmType ) nElement++;
28843 if( pWin->eExclude ) nElement++;
28844 if( pWin->zBase ){
28846 sqlite3TreeViewLine(pView, "window: %s", pWin->zBase);
28849 if( pWin->pPartition ){
28850 sqlite3TreeViewExprList(pView, pWin->pPartition, nElement>0,"PARTITION-BY");
28852 if( pWin->pOrderBy ){
28853 sqlite3TreeViewExprList(pView, pWin->pOrderBy, (--nElement)>0, "ORDER-BY");
28855 if( pWin->eFrmType ){
28858 if( pWin->eFrmType==TK_RANGE ) zFrmType = "RANGE";
28859 if( pWin->eFrmType==TK_GROUPS ) zFrmType = "GROUPS";
28861 pWin->bImplicitFrame ? " (implied)" : "");
28863 sqlite3TreeViewBound(pView, pWin->eStart, pWin->pStart, 1);
28864 sqlite3TreeViewBound(pView, pWin->eEnd, pWin->pEnd, 0);
28867 if( pWin->eExclude ){
28870 switch( pWin->eExclude ){
28876 sqlite3_snprintf(sizeof(zBuf),zBuf,"invalid(%d)", pWin->eExclude);
28892 SQLITE_PRIVATE void sqlite3TreeViewWinFunc(TreeView *pView, const Window *pWin, u8 more){
28895 pWin->pFunc->zName, pWin->pFunc->nArg);
28896 sqlite3TreeViewWindow(pView, pWin, 0);
29054 Window *pWin;
29057 pWin = 0;
29061 pWin = pExpr->y.pWin;
29063 pWin = 0;
29073 sqlite3TreeViewExprList(pView, pFarg, pWin!=0, 0);
29076 if( pWin ){
29077 sqlite3TreeViewWindow(pView, pWin, 0);
94946 Window *pWin;
94947 for(pWin=pList; pWin; pWin=pWin->pNextWin){
94948 if( sqlite3WalkExprList(pWalker, pWin->pOrderBy) ) return WRC_Abort;
94949 if( sqlite3WalkExprList(pWalker, pWin->pPartition) ) return WRC_Abort;
94950 if( sqlite3WalkExpr(pWalker, pWin->pFilter) ) return WRC_Abort;
94995 if( walkWindowList(pWalker, pExpr->y.pWin) ) return WRC_Abort;
95934 || (is_agg && (pDef->funcFlags&SQLITE_FUNC_WINDOW) && !pExpr->y.pWin)
95935 || (is_agg && pExpr->y.pWin && (pNC->ncFlags & NC_AllowWin)==0)
95938 if( (pDef->funcFlags & SQLITE_FUNC_WINDOW) || pExpr->y.pWin ){
95971 pNC->ncFlags &= ~(NC_AllowWin | (!pExpr->y.pWin ? NC_AllowAgg : 0));
95980 if( pExpr->y.pWin ){
95982 sqlite3WindowUpdate(pParse, pSel->pWinDefn, pExpr->y.pWin, pDef);
95983 sqlite3WalkExprList(pWalker, pExpr->y.pWin->pPartition);
95984 sqlite3WalkExprList(pWalker, pExpr->y.pWin->pOrderBy);
95985 sqlite3WalkExpr(pWalker, pExpr->y.pWin->pFilter);
95986 if( 0==pSel->pWin
95987 || 0==sqlite3WindowCompare(pParse, pSel->pWin, pExpr->y.pWin)
95989 pExpr->y.pWin->pNextWin = pSel->pWin;
95990 pSel->pWin = pExpr->y.pWin;
96374 for(pp=&pWalker->u.pSelect->pWin; *pp; pp=&(*pp)->pNextWin){
96375 if( *pp==pExpr->y.pWin ){
96682 Window *pWin;
96683 for(pWin=p->pWinDefn; pWin; pWin=pWin->pNextWin){
96684 if( sqlite3ResolveExprListNames(&sNC, pWin->pOrderBy)
96685 || sqlite3ResolveExprListNames(&sNC, pWin->pPartition)
97945 assert( !ExprHasProperty(p, EP_WinFunc) || p->y.pWin!=0 || db->mallocFailed );
97947 || p->y.pWin==0 || ExprHasProperty(p, EP_WinFunc) );
97968 sqlite3WindowDelete(db, p->y.pWin);
98182 pNew->y.pWin = sqlite3WindowDup(db, pNew, p->y.pWin);
98240 if( pExpr->op==TK_FUNCTION && pExpr->y.pWin!=0 ){
98242 pExpr->y.pWin->pNextWin = pWalker->u.pSelect->pWin;
98243 pWalker->u.pSelect->pWin = pExpr->y.pWin;
98427 pNew->pWin = 0;
98429 if( p->pWin ) gatherSelectWindows(pNew);
100607 return pExpr->y.pWin->regResult;
101722 if( sqlite3WindowCompare(pParse,pA->y.pWin,pB->y.pWin)!=0 ) return 2;
124790 pNew->pWin = 0;
126949 if( p->pWin ){
128342 if( p->pWin || pSub->pWin ) return 0; /* Restriction (25) */
128947 if( pSubq->pWin ) return 0; /* restriction (6) */
130685 Window *pWin = p->pWin; /* Master window object (or NULL) */
130686 if( pWin ){
130687 sqlite3WindowCodeInit(pParse, pWin);
130722 if( pWin ){
139952 if( p->op==TK_FUNCTION && p->y.pWin ){
139953 mask |= sqlite3WhereExprListUsage(pMaskSet, p->y.pWin->pPartition);
139954 mask |= sqlite3WhereExprListUsage(pMaskSet, p->y.pWin->pOrderBy);
146071 Window *pWin, /* Window frame to update */
146074 if( pWin->zName && pWin->eFrmType==0 ){
146075 Window *p = windowFind(pParse, pList, pWin->zName);
146077 pWin->pPartition = sqlite3ExprListDup(pParse->db, p->pPartition, 0);
146078 pWin->pOrderBy = sqlite3ExprListDup(pParse->db, p->pOrderBy, 0);
146079 pWin->pStart = sqlite3ExprDup(pParse->db, p->pStart, 0);
146080 pWin->pEnd = sqlite3ExprDup(pParse->db, p->pEnd, 0);
146081 pWin->eStart = p->eStart;
146082 pWin->eEnd = p->eEnd;
146083 pWin->eFrmType = p->eFrmType;
146084 pWin->eExclude = p->eExclude;
146086 sqlite3WindowChain(pParse, pWin, pList);
146088 if( (pWin->eFrmType==TK_RANGE)
146089 && (pWin->pStart || pWin->pEnd)
146090 && (pWin->pOrderBy==0 || pWin->pOrderBy->nExpr!=1)
146098 if( pWin->pFilter ){
146121 sqlite3ExprDelete(db, pWin->pStart);
146122 sqlite3ExprDelete(db, pWin->pEnd);
146123 pWin->pEnd = pWin->pStart = 0;
146124 pWin->eFrmType = aUp[i].eFrmType;
146125 pWin->eStart = aUp[i].eStart;
146126 pWin->eEnd = aUp[i].eEnd;
146127 pWin->eExclude = 0;
146128 if( pWin->eStart==TK_FOLLOWING ){
146129 pWin->pStart = sqlite3Expr(db, TK_INTEGER, "1");
146136 pWin->pFunc = pFunc;
146145 Window *pWin;
146184 Window *pWin;
146185 for(pWin=p->pWin; pWin; pWin=pWin->pNextWin){
146186 if( pExpr->y.pWin==pWin ){
146187 assert( pWin->pOwner==pExpr );
146207 pExpr->iTable = p->pWin->iEphCsr;
146248 Window *pWin,
146260 sRewrite.pWin = pWin;
146303 if( p->pWin && p->pPrior==0 ){
146314 Window *pMWin = p->pWin; /* Master window object */
146315 Window *pWin; /* Window object iterator */
146354 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
146355 pWin->iArgCol = (pSublist ? pSublist->nExpr : 0);
146356 pSublist = exprListAppendList(pParse, pSublist, pWin->pOwner->x.pList);
146357 if( pWin->pFilter ){
146358 Expr *pFilter = sqlite3ExprDup(db, pWin->pFilter, 0);
146361 pWin->regAccum = ++pParse->nMem;
146362 pWin->regResult = ++pParse->nMem;
146363 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regAccum);
146461 Window *pWin = 0;
146499 pWin = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window));
146500 if( pWin==0 ) goto windowAllocErr;
146501 pWin->eFrmType = eType;
146502 pWin->eStart = eStart;
146503 pWin->eEnd = eEnd;
146507 pWin->eExclude = eExclude;
146508 pWin->bImplicitFrame = bImplicitFrame;
146509 pWin->pEnd = sqlite3WindowOffsetExpr(pParse, pEnd);
146510 pWin->pStart = sqlite3WindowOffsetExpr(pParse, pStart);
146511 return pWin;
146526 Window *pWin,
146531 if( pWin ){
146532 pWin->pPartition = pPartition;
146533 pWin->pOrderBy = pOrderBy;
146535 pWin->zBase = sqlite3DbStrNDup(pParse->db, pBase->z, pBase->n);
146541 return pWin;
146551 SQLITE_PRIVATE void sqlite3WindowChain(Parse *pParse, Window *pWin, Window *pList){
146552 if( pWin->zBase ){
146554 Window *pExist = windowFind(pParse, pList, pWin->zBase);
146558 if( pWin->pPartition ){
146560 }else if( pExist->pOrderBy && pWin->pOrderBy ){
146567 "cannot override %s of window: %s", zErr, pWin->zBase
146570 pWin->pPartition = sqlite3ExprListDup(db, pExist->pPartition, 0);
146572 assert( pWin->pOrderBy==0 );
146573 pWin->pOrderBy = sqlite3ExprListDup(db, pExist->pOrderBy, 0);
146575 sqlite3DbFree(db, pWin->zBase);
146576 pWin->zBase = 0;
146585 SQLITE_PRIVATE void sqlite3WindowAttach(Parse *pParse, Expr *p, Window *pWin){
146591 if( ALWAYS(pWin) ){
146592 p->y.pWin = pWin;
146594 pWin->pOwner = p;
146601 sqlite3WindowDelete(pParse->db, pWin);
146628 Window *pWin;
146653 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
146654 FuncDef *p = pWin->pFunc;
146655 if( (p->funcFlags & SQLITE_FUNC_MINMAX) && pWin->eStart!=TK_UNBOUNDED ){
146663 ExprList *pList = pWin->pOwner->x.pList;
146665 pWin->csrApp = pParse->nTab++;
146666 pWin->regApp = pParse->nMem+1;
146668 if( pKeyInfo && pWin->pFunc->zName[1]=='i' ){
146672 sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pWin->csrApp, 2);
146674 sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp+1);
146679 pWin->regApp = pParse->nMem+1;
146680 pWin->csrApp = pParse->nTab++;
146682 sqlite3VdbeAddOp2(v, OP_OpenDup, pWin->csrApp, pMWin->iEphCsr);
146685 pWin->csrApp = pParse->nTab++;
146686 sqlite3VdbeAddOp2(v, OP_OpenDup, pWin->csrApp, pMWin->iEphCsr);
146750 static int windowArgCount(Window *pWin){
146751 ExprList *pList = pWin->pOwner->x.pList;
146782 Window *pWin;
146783 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
146784 FuncDef *pFunc = pWin->pFunc;
146786 int nArg = windowArgCount(pWin);
146791 sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol+i, reg+i);
146793 sqlite3VdbeAddOp3(v, OP_Column, pMWin->iEphCsr, pWin->iArgCol+i, reg+i);
146800 && (pWin->eStart!=TK_UNBOUNDED)
146805 sqlite3VdbeAddOp2(v, OP_AddImm, pWin->regApp+1, 1);
146806 sqlite3VdbeAddOp2(v, OP_SCopy, regArg, pWin->regApp);
146807 sqlite3VdbeAddOp3(v, OP_MakeRecord, pWin->regApp, 2, pWin->regApp+2);
146808 sqlite3VdbeAddOp2(v, OP_IdxInsert, pWin->csrApp, pWin->regApp+2);
146810 sqlite3VdbeAddOp4Int(v, OP_SeekGE, pWin->csrApp, 0, regArg, 1);
146812 sqlite3VdbeAddOp1(v, OP_Delete, pWin->csrApp);
146816 }else if( pWin->regApp ){
146821 sqlite3VdbeAddOp2(v, OP_AddImm, pWin->regApp+1-bInverse, 1);
146824 if( pWin->pFilter ){
146826 assert( nArg==0 || nArg==pWin->pOwner->x.pList->nExpr );
146827 assert( nArg || pWin->pOwner->x.pList==0 );
146829 sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol+nArg,regTmp);
146837 pColl = sqlite3ExprNNCollSeq(pParse, pWin->pOwner->x.pList->a[0].pExpr);
146841 bInverse, regArg, pWin->regAccum);
146909 Window *pWin;
146911 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
146913 && (pWin->pFunc->funcFlags & SQLITE_FUNC_MINMAX)
146914 && (pWin->eStart!=TK_UNBOUNDED)
146916 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regResult);
146917 sqlite3VdbeAddOp1(v, OP_Last, pWin->csrApp);
146919 sqlite3VdbeAddOp3(v, OP_Column, pWin->csrApp, 0, pWin->regResult);
146921 }else if( pWin->regApp ){
146924 int nArg = windowArgCount(pWin);
146926 sqlite3VdbeAddOp2(v, OP_AggFinal, pWin->regAccum, nArg);
146927 sqlite3VdbeAppendP4(v, pWin->pFunc, P4_FUNCDEF);
146928 sqlite3VdbeAddOp2(v, OP_Copy, pWin->regAccum, pWin->regResult);
146929 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regAccum);
146931 sqlite3VdbeAddOp3(v, OP_AggValue,pWin->regAccum,nArg,pWin->regResult);
146932 sqlite3VdbeAppendP4(v, pWin->pFunc, P4_FUNCDEF);
146945 Window *pWin;
146976 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
146977 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regAccum);
147053 Window *pWin;
147055 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
147056 FuncDef *pFunc = pWin->pFunc;
147060 int csr = pWin->csrApp;
147063 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regResult);
147066 sqlite3VdbeAddOp3(v, OP_Column,pMWin->iEphCsr,pWin->iArgCol+1,tmpReg);
147071 sqlite3VdbeAddOp3(v, OP_Add, tmpReg, pWin->regApp, tmpReg);
147072 sqlite3VdbeAddOp3(v, OP_Gt, pWin->regApp+1, lbl, tmpReg);
147076 sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol, pWin->regResult);
147081 int nArg = pWin->pOwner->x.pList->nExpr;
147082 int csr = pWin->csrApp;
147088 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regResult);
147090 sqlite3VdbeAddOp3(v, OP_Column, iEph,pWin->iArgCol+2,pWin->regResult);
147099 sqlite3VdbeAddOp3(v, OP_Column, iEph, pWin->iArgCol+1, tmpReg2);
147106 sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol, pWin->regResult);
147125 Window *pWin;
147126 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
147127 FuncDef *pFunc = pWin->pFunc;
147128 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regAccum);
147129 nArg = MAX(nArg, windowArgCount(pWin));
147132 sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp);
147133 sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp+1);
147136 if( (pFunc->funcFlags & SQLITE_FUNC_MINMAX) && pWin->csrApp ){
147137 assert( pWin->eStart!=TK_UNBOUNDED );
147138 sqlite3VdbeAddOp1(v, OP_ResetSorter, pWin->csrApp);
147139 sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp+1);
147153 Window *pWin;
147155 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){
147156 FuncDef *pFunc = pWin->pFunc;
147422 Window *pWin;
147426 for(pWin=p; pWin; pWin=pWin->pNextWin){
147427 *pp = sqlite3WindowDup(db, 0, pWin);
147797 Window *pMWin = p->pWin;