Lines Matching refs:pWin
662 Window *pWin, /* Window frame to update */ in sqlite3WindowUpdate() argument
665 if( pWin->zName && pWin->eFrmType==0 ){ in sqlite3WindowUpdate()
666 Window *p = windowFind(pParse, pList, pWin->zName); in sqlite3WindowUpdate()
668 pWin->pPartition = sqlite3ExprListDup(pParse->db, p->pPartition, 0); in sqlite3WindowUpdate()
669 pWin->pOrderBy = sqlite3ExprListDup(pParse->db, p->pOrderBy, 0); in sqlite3WindowUpdate()
670 pWin->pStart = sqlite3ExprDup(pParse->db, p->pStart, 0); in sqlite3WindowUpdate()
671 pWin->pEnd = sqlite3ExprDup(pParse->db, p->pEnd, 0); in sqlite3WindowUpdate()
672 pWin->eStart = p->eStart; in sqlite3WindowUpdate()
673 pWin->eEnd = p->eEnd; in sqlite3WindowUpdate()
674 pWin->eFrmType = p->eFrmType; in sqlite3WindowUpdate()
675 pWin->eExclude = p->eExclude; in sqlite3WindowUpdate()
677 sqlite3WindowChain(pParse, pWin, pList); in sqlite3WindowUpdate()
679 if( (pWin->eFrmType==TK_RANGE) in sqlite3WindowUpdate()
680 && (pWin->pStart || pWin->pEnd) in sqlite3WindowUpdate()
681 && (pWin->pOrderBy==0 || pWin->pOrderBy->nExpr!=1) in sqlite3WindowUpdate()
689 if( pWin->pFilter ){ in sqlite3WindowUpdate()
712 sqlite3ExprDelete(db, pWin->pStart); in sqlite3WindowUpdate()
713 sqlite3ExprDelete(db, pWin->pEnd); in sqlite3WindowUpdate()
714 pWin->pEnd = pWin->pStart = 0; in sqlite3WindowUpdate()
715 pWin->eFrmType = aUp[i].eFrmType; in sqlite3WindowUpdate()
716 pWin->eStart = aUp[i].eStart; in sqlite3WindowUpdate()
717 pWin->eEnd = aUp[i].eEnd; in sqlite3WindowUpdate()
718 pWin->eExclude = 0; in sqlite3WindowUpdate()
719 if( pWin->eStart==TK_FOLLOWING ){ in sqlite3WindowUpdate()
720 pWin->pStart = sqlite3Expr(db, TK_INTEGER, "1"); in sqlite3WindowUpdate()
727 pWin->pWFunc = pFunc; in sqlite3WindowUpdate()
736 Window *pWin; member
752 assert( p->pWin!=0 ); in selectWindowRewriteExprCb()
778 Window *pWin; in selectWindowRewriteExprCb() local
779 for(pWin=p->pWin; pWin; pWin=pWin->pNextWin){ in selectWindowRewriteExprCb()
780 if( pExpr->y.pWin==pWin ){ in selectWindowRewriteExprCb()
781 assert( pWin->pOwner==pExpr ); in selectWindowRewriteExprCb()
816 pExpr->iTable = p->pWin->iEphCsr; in selectWindowRewriteExprCb()
859 Window *pWin, in selectWindowRewriteEList() argument
868 assert( pWin!=0 ); in selectWindowRewriteEList()
873 sRewrite.pWin = pWin; in selectWindowRewriteEList()
959 if( p->pWin in sqlite3WindowRewrite()
974 Window *pMWin = p->pWin; /* Main window object */ in sqlite3WindowRewrite()
975 Window *pWin; /* Window object iterator */ in sqlite3WindowRewrite() local
1035 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ in sqlite3WindowRewrite()
1037 assert( ExprUseXList(pWin->pOwner) ); in sqlite3WindowRewrite()
1038 assert( pWin->pWFunc!=0 ); in sqlite3WindowRewrite()
1039 pArgs = pWin->pOwner->x.pList; in sqlite3WindowRewrite()
1040 if( pWin->pWFunc->funcFlags & SQLITE_FUNC_SUBTYPE ){ in sqlite3WindowRewrite()
1042 pWin->iArgCol = (pSublist ? pSublist->nExpr : 0); in sqlite3WindowRewrite()
1043 pWin->bExprArgs = 1; in sqlite3WindowRewrite()
1045 pWin->iArgCol = (pSublist ? pSublist->nExpr : 0); in sqlite3WindowRewrite()
1048 if( pWin->pFilter ){ in sqlite3WindowRewrite()
1049 Expr *pFilter = sqlite3ExprDup(db, pWin->pFilter, 0); in sqlite3WindowRewrite()
1052 pWin->regAccum = ++pParse->nMem; in sqlite3WindowRewrite()
1053 pWin->regResult = ++pParse->nMem; in sqlite3WindowRewrite()
1054 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regAccum); in sqlite3WindowRewrite()
1185 Window *pWin = 0; in sqlite3WindowAlloc() local
1223 pWin = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window)); in sqlite3WindowAlloc()
1224 if( pWin==0 ) goto windowAllocErr; in sqlite3WindowAlloc()
1225 pWin->eFrmType = eType; in sqlite3WindowAlloc()
1226 pWin->eStart = eStart; in sqlite3WindowAlloc()
1227 pWin->eEnd = eEnd; in sqlite3WindowAlloc()
1231 pWin->eExclude = eExclude; in sqlite3WindowAlloc()
1232 pWin->bImplicitFrame = bImplicitFrame; in sqlite3WindowAlloc()
1233 pWin->pEnd = sqlite3WindowOffsetExpr(pParse, pEnd); in sqlite3WindowAlloc()
1234 pWin->pStart = sqlite3WindowOffsetExpr(pParse, pStart); in sqlite3WindowAlloc()
1235 return pWin; in sqlite3WindowAlloc()
1250 Window *pWin, in sqlite3WindowAssemble() argument
1255 if( pWin ){ in sqlite3WindowAssemble()
1256 pWin->pPartition = pPartition; in sqlite3WindowAssemble()
1257 pWin->pOrderBy = pOrderBy; in sqlite3WindowAssemble()
1259 pWin->zBase = sqlite3DbStrNDup(pParse->db, pBase->z, pBase->n); in sqlite3WindowAssemble()
1265 return pWin; in sqlite3WindowAssemble()
1275 void sqlite3WindowChain(Parse *pParse, Window *pWin, Window *pList){ in sqlite3WindowChain() argument
1276 if( pWin->zBase ){ in sqlite3WindowChain()
1278 Window *pExist = windowFind(pParse, pList, pWin->zBase); in sqlite3WindowChain()
1282 if( pWin->pPartition ){ in sqlite3WindowChain()
1284 }else if( pExist->pOrderBy && pWin->pOrderBy ){ in sqlite3WindowChain()
1291 "cannot override %s of window: %s", zErr, pWin->zBase in sqlite3WindowChain()
1294 pWin->pPartition = sqlite3ExprListDup(db, pExist->pPartition, 0); in sqlite3WindowChain()
1296 assert( pWin->pOrderBy==0 ); in sqlite3WindowChain()
1297 pWin->pOrderBy = sqlite3ExprListDup(db, pExist->pOrderBy, 0); in sqlite3WindowChain()
1299 sqlite3DbFree(db, pWin->zBase); in sqlite3WindowChain()
1300 pWin->zBase = 0; in sqlite3WindowChain()
1309 void sqlite3WindowAttach(Parse *pParse, Expr *p, Window *pWin){ in sqlite3WindowAttach() argument
1312 assert( pWin ); in sqlite3WindowAttach()
1313 p->y.pWin = pWin; in sqlite3WindowAttach()
1315 pWin->pOwner = p; in sqlite3WindowAttach()
1316 if( (p->flags & EP_Distinct) && pWin->eFrmType!=TK_FILTER ){ in sqlite3WindowAttach()
1322 sqlite3WindowDelete(pParse->db, pWin); in sqlite3WindowAttach()
1332 void sqlite3WindowLink(Select *pSel, Window *pWin){ in sqlite3WindowLink() argument
1334 if( 0==pSel->pWin || 0==sqlite3WindowCompare(0, pSel->pWin, pWin, 0) ){ in sqlite3WindowLink()
1335 pWin->pNextWin = pSel->pWin; in sqlite3WindowLink()
1336 if( pSel->pWin ){ in sqlite3WindowLink()
1337 pSel->pWin->ppThis = &pWin->pNextWin; in sqlite3WindowLink()
1339 pSel->pWin = pWin; in sqlite3WindowLink()
1340 pWin->ppThis = &pSel->pWin; in sqlite3WindowLink()
1342 if( sqlite3ExprListCompare(pWin->pPartition, pSel->pWin->pPartition,-1) ){ in sqlite3WindowLink()
1390 Window *pMWin = pSelect->pWin; in sqlite3WindowCodeInit()
1391 Window *pWin; in sqlite3WindowCodeInit() local
1421 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ in sqlite3WindowCodeInit()
1422 FuncDef *p = pWin->pWFunc; in sqlite3WindowCodeInit()
1423 if( (p->funcFlags & SQLITE_FUNC_MINMAX) && pWin->eStart!=TK_UNBOUNDED ){ in sqlite3WindowCodeInit()
1433 assert( ExprUseXList(pWin->pOwner) ); in sqlite3WindowCodeInit()
1434 pList = pWin->pOwner->x.pList; in sqlite3WindowCodeInit()
1436 pWin->csrApp = pParse->nTab++; in sqlite3WindowCodeInit()
1437 pWin->regApp = pParse->nMem+1; in sqlite3WindowCodeInit()
1439 if( pKeyInfo && pWin->pWFunc->zName[1]=='i' ){ in sqlite3WindowCodeInit()
1443 sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pWin->csrApp, 2); in sqlite3WindowCodeInit()
1445 sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp+1); in sqlite3WindowCodeInit()
1450 pWin->regApp = pParse->nMem+1; in sqlite3WindowCodeInit()
1451 pWin->csrApp = pParse->nTab++; in sqlite3WindowCodeInit()
1453 sqlite3VdbeAddOp2(v, OP_OpenDup, pWin->csrApp, pMWin->iEphCsr); in sqlite3WindowCodeInit()
1456 pWin->csrApp = pParse->nTab++; in sqlite3WindowCodeInit()
1457 sqlite3VdbeAddOp2(v, OP_OpenDup, pWin->csrApp, pMWin->iEphCsr); in sqlite3WindowCodeInit()
1522 static int windowArgCount(Window *pWin){ in windowArgCount() argument
1524 assert( ExprUseXList(pWin->pOwner) ); in windowArgCount()
1525 pList = pWin->pOwner->x.pList; in windowArgCount()
1660 Window *pWin; in windowAggStep() local
1661 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ in windowAggStep()
1662 FuncDef *pFunc = pWin->pWFunc; in windowAggStep()
1664 int nArg = pWin->bExprArgs ? 0 : windowArgCount(pWin); in windowAggStep()
1667 assert( bInverse==0 || pWin->eStart!=TK_UNBOUNDED ); in windowAggStep()
1671 assert( pWin==pMWin || sqlite3WindowCompare(pParse,pWin,pMWin,0)!=1 ); in windowAggStep()
1675 sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol+i, reg+i); in windowAggStep()
1677 sqlite3VdbeAddOp3(v, OP_Column, pMWin->iEphCsr, pWin->iArgCol+i, reg+i); in windowAggStep()
1684 && (pWin->eStart!=TK_UNBOUNDED) in windowAggStep()
1689 sqlite3VdbeAddOp2(v, OP_AddImm, pWin->regApp+1, 1); in windowAggStep()
1690 sqlite3VdbeAddOp2(v, OP_SCopy, regArg, pWin->regApp); in windowAggStep()
1691 sqlite3VdbeAddOp3(v, OP_MakeRecord, pWin->regApp, 2, pWin->regApp+2); in windowAggStep()
1692 sqlite3VdbeAddOp2(v, OP_IdxInsert, pWin->csrApp, pWin->regApp+2); in windowAggStep()
1694 sqlite3VdbeAddOp4Int(v, OP_SeekGE, pWin->csrApp, 0, regArg, 1); in windowAggStep()
1696 sqlite3VdbeAddOp1(v, OP_Delete, pWin->csrApp); in windowAggStep()
1700 }else if( pWin->regApp ){ in windowAggStep()
1705 sqlite3VdbeAddOp2(v, OP_AddImm, pWin->regApp+1-bInverse, 1); in windowAggStep()
1708 if( pWin->pFilter ){ in windowAggStep()
1710 assert( ExprUseXList(pWin->pOwner) ); in windowAggStep()
1711 assert( pWin->bExprArgs || !nArg ||nArg==pWin->pOwner->x.pList->nExpr ); in windowAggStep()
1712 assert( pWin->bExprArgs || nArg ||pWin->pOwner->x.pList==0 ); in windowAggStep()
1714 sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol+nArg,regTmp); in windowAggStep()
1720 if( pWin->bExprArgs ){ in windowAggStep()
1724 assert( ExprUseXList(pWin->pOwner) ); in windowAggStep()
1725 nArg = pWin->pOwner->x.pList->nExpr; in windowAggStep()
1727 sqlite3ExprCodeExprList(pParse, pWin->pOwner->x.pList, regArg, 0, 0); in windowAggStep()
1739 assert( ExprUseXList(pWin->pOwner) ); in windowAggStep()
1740 pColl = sqlite3ExprNNCollSeq(pParse, pWin->pOwner->x.pList->a[0].pExpr); in windowAggStep()
1744 bInverse, regArg, pWin->regAccum); in windowAggStep()
1747 if( pWin->bExprArgs ){ in windowAggStep()
1772 Window *pWin; in windowAggFinal() local
1774 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ in windowAggFinal()
1776 && (pWin->pWFunc->funcFlags & SQLITE_FUNC_MINMAX) in windowAggFinal()
1777 && (pWin->eStart!=TK_UNBOUNDED) in windowAggFinal()
1779 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regResult); in windowAggFinal()
1780 sqlite3VdbeAddOp1(v, OP_Last, pWin->csrApp); in windowAggFinal()
1782 sqlite3VdbeAddOp3(v, OP_Column, pWin->csrApp, 0, pWin->regResult); in windowAggFinal()
1784 }else if( pWin->regApp ){ in windowAggFinal()
1787 int nArg = windowArgCount(pWin); in windowAggFinal()
1789 sqlite3VdbeAddOp2(v, OP_AggFinal, pWin->regAccum, nArg); in windowAggFinal()
1790 sqlite3VdbeAppendP4(v, pWin->pWFunc, P4_FUNCDEF); in windowAggFinal()
1791 sqlite3VdbeAddOp2(v, OP_Copy, pWin->regAccum, pWin->regResult); in windowAggFinal()
1792 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regAccum); in windowAggFinal()
1794 sqlite3VdbeAddOp3(v, OP_AggValue,pWin->regAccum,nArg,pWin->regResult); in windowAggFinal()
1795 sqlite3VdbeAppendP4(v, pWin->pWFunc, P4_FUNCDEF); in windowAggFinal()
1808 Window *pWin; in windowFullScan() local
1843 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ in windowFullScan()
1844 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regAccum); in windowFullScan()
1921 Window *pWin; in windowReturnOneRow() local
1923 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ in windowReturnOneRow()
1924 FuncDef *pFunc = pWin->pWFunc; in windowReturnOneRow()
1925 assert( ExprUseXList(pWin->pOwner) ); in windowReturnOneRow()
1929 int csr = pWin->csrApp; in windowReturnOneRow()
1932 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regResult); in windowReturnOneRow()
1935 sqlite3VdbeAddOp3(v, OP_Column,pMWin->iEphCsr,pWin->iArgCol+1,tmpReg); in windowReturnOneRow()
1940 sqlite3VdbeAddOp3(v, OP_Add, tmpReg, pWin->regApp, tmpReg); in windowReturnOneRow()
1941 sqlite3VdbeAddOp3(v, OP_Gt, pWin->regApp+1, lbl, tmpReg); in windowReturnOneRow()
1945 sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol, pWin->regResult); in windowReturnOneRow()
1950 int nArg = pWin->pOwner->x.pList->nExpr; in windowReturnOneRow()
1951 int csr = pWin->csrApp; in windowReturnOneRow()
1957 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regResult); in windowReturnOneRow()
1959 sqlite3VdbeAddOp3(v, OP_Column, iEph,pWin->iArgCol+2,pWin->regResult); in windowReturnOneRow()
1968 sqlite3VdbeAddOp3(v, OP_Column, iEph, pWin->iArgCol+1, tmpReg2); in windowReturnOneRow()
1975 sqlite3VdbeAddOp3(v, OP_Column, csr, pWin->iArgCol, pWin->regResult); in windowReturnOneRow()
1994 Window *pWin; in windowInitAccum() local
1995 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ in windowInitAccum()
1996 FuncDef *pFunc = pWin->pWFunc; in windowInitAccum()
1997 assert( pWin->regAccum ); in windowInitAccum()
1998 sqlite3VdbeAddOp2(v, OP_Null, 0, pWin->regAccum); in windowInitAccum()
1999 nArg = MAX(nArg, windowArgCount(pWin)); in windowInitAccum()
2002 sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp); in windowInitAccum()
2003 sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp+1); in windowInitAccum()
2006 if( (pFunc->funcFlags & SQLITE_FUNC_MINMAX) && pWin->csrApp ){ in windowInitAccum()
2007 assert( pWin->eStart!=TK_UNBOUNDED ); in windowInitAccum()
2008 sqlite3VdbeAddOp1(v, OP_ResetSorter, pWin->csrApp); in windowInitAccum()
2009 sqlite3VdbeAddOp2(v, OP_Integer, 0, pWin->regApp+1); in windowInitAccum()
2023 Window *pWin; in windowCacheFrame() local
2025 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ in windowCacheFrame()
2026 FuncDef *pFunc = pWin->pWFunc; in windowCacheFrame()
2409 Window *pWin; in sqlite3WindowListDup() local
2413 for(pWin=p; pWin; pWin=pWin->pNextWin){ in sqlite3WindowListDup()
2414 *pp = sqlite3WindowDup(db, 0, pWin); in sqlite3WindowListDup()
2784 Window *pMWin = p->pWin; in sqlite3WindowCodeStep()