Lines Matching refs:pMWin
974 Window *pMWin = p->pWin; /* Main window object */ in sqlite3WindowRewrite() local
1003 pSort = exprListAppendList(pParse, 0, pMWin->pPartition, 1); in sqlite3WindowRewrite()
1004 pSort = exprListAppendList(pParse, pSort, pMWin->pOrderBy, 1); in sqlite3WindowRewrite()
1018 pMWin->iEphCsr = pParse->nTab++; in sqlite3WindowRewrite()
1021 selectWindowRewriteEList(pParse, pMWin, pSrc, p->pEList, pTab, &pSublist); in sqlite3WindowRewrite()
1022 selectWindowRewriteEList(pParse, pMWin, pSrc, p->pOrderBy, pTab, &pSublist); in sqlite3WindowRewrite()
1023 pMWin->nBufferCol = (pSublist ? pSublist->nExpr : 0); in sqlite3WindowRewrite()
1028 pSublist = exprListAppendList(pParse, pSublist, pMWin->pPartition, 0); in sqlite3WindowRewrite()
1029 pSublist = exprListAppendList(pParse, pSublist, pMWin->pOrderBy, 0); in sqlite3WindowRewrite()
1035 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ in sqlite3WindowRewrite()
1041 selectWindowRewriteEList(pParse, pMWin, pSrc, pArgs, pTab, &pSublist); in sqlite3WindowRewrite()
1390 Window *pMWin = pSelect->pWin; in sqlite3WindowCodeInit() local
1394 sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pMWin->iEphCsr, nEphExpr); in sqlite3WindowCodeInit()
1395 sqlite3VdbeAddOp2(v, OP_OpenDup, pMWin->iEphCsr+1, pMWin->iEphCsr); in sqlite3WindowCodeInit()
1396 sqlite3VdbeAddOp2(v, OP_OpenDup, pMWin->iEphCsr+2, pMWin->iEphCsr); in sqlite3WindowCodeInit()
1397 sqlite3VdbeAddOp2(v, OP_OpenDup, pMWin->iEphCsr+3, pMWin->iEphCsr); in sqlite3WindowCodeInit()
1401 if( pMWin->pPartition ){ in sqlite3WindowCodeInit()
1402 int nExpr = pMWin->pPartition->nExpr; in sqlite3WindowCodeInit()
1403 pMWin->regPart = pParse->nMem+1; in sqlite3WindowCodeInit()
1405 sqlite3VdbeAddOp3(v, OP_Null, 0, pMWin->regPart, pMWin->regPart+nExpr-1); in sqlite3WindowCodeInit()
1408 pMWin->regOne = ++pParse->nMem; in sqlite3WindowCodeInit()
1409 sqlite3VdbeAddOp2(v, OP_Integer, 1, pMWin->regOne); in sqlite3WindowCodeInit()
1411 if( pMWin->eExclude ){ in sqlite3WindowCodeInit()
1412 pMWin->regStartRowid = ++pParse->nMem; in sqlite3WindowCodeInit()
1413 pMWin->regEndRowid = ++pParse->nMem; in sqlite3WindowCodeInit()
1414 pMWin->csrApp = pParse->nTab++; in sqlite3WindowCodeInit()
1415 sqlite3VdbeAddOp2(v, OP_Integer, 1, pMWin->regStartRowid); in sqlite3WindowCodeInit()
1416 sqlite3VdbeAddOp2(v, OP_Integer, 0, pMWin->regEndRowid); in sqlite3WindowCodeInit()
1417 sqlite3VdbeAddOp2(v, OP_OpenDup, pMWin->csrApp, pMWin->iEphCsr); in sqlite3WindowCodeInit()
1421 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ in sqlite3WindowCodeInit()
1453 sqlite3VdbeAddOp2(v, OP_OpenDup, pWin->csrApp, pMWin->iEphCsr); in sqlite3WindowCodeInit()
1457 sqlite3VdbeAddOp2(v, OP_OpenDup, pWin->csrApp, pMWin->iEphCsr); in sqlite3WindowCodeInit()
1597 Window *pMWin; /* First in list of functions being processed */ member
1619 Window *pMWin = p->pMWin; in windowReadPeerValues() local
1620 ExprList *pOrderBy = pMWin->pOrderBy; in windowReadPeerValues()
1623 ExprList *pPart = pMWin->pPartition; in windowReadPeerValues()
1624 int iColOff = pMWin->nBufferCol + (pPart ? pPart->nExpr : 0); in windowReadPeerValues()
1653 Window *pMWin, /* Linked list of window functions */ in windowAggStep() argument
1661 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ in windowAggStep()
1671 assert( pWin==pMWin || sqlite3WindowCompare(pParse,pWin,pMWin,0)!=1 ); in windowAggStep()
1677 sqlite3VdbeAddOp3(v, OP_Column, pMWin->iEphCsr, pWin->iArgCol+i, reg+i); in windowAggStep()
1682 if( pMWin->regStartRowid==0 in windowAggStep()
1731 if( pOp->opcode==OP_Column && pOp->p1==pMWin->iEphCsr ){ in windowAggStep()
1770 Window *pMWin = p->pMWin; in windowAggFinal() local
1774 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ in windowAggFinal()
1775 if( pMWin->regStartRowid==0 in windowAggFinal()
1785 assert( pMWin->regStartRowid==0 ); in windowAggFinal()
1810 Window *pMWin = p->pMWin; in windowFullScan() local
1826 assert( pMWin!=0 ); in windowFullScan()
1827 csr = pMWin->csrApp; in windowFullScan()
1828 nPeer = (pMWin->pOrderBy ? pMWin->pOrderBy->nExpr : 0); in windowFullScan()
1840 sqlite3VdbeAddOp2(v, OP_Rowid, pMWin->iEphCsr, regCRowid); in windowFullScan()
1841 windowReadPeerValues(p, pMWin->iEphCsr, regCPeer); in windowFullScan()
1843 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ in windowFullScan()
1847 sqlite3VdbeAddOp3(v, OP_SeekGE, csr, lblBrk, pMWin->regStartRowid); in windowFullScan()
1851 sqlite3VdbeAddOp3(v, OP_Gt, pMWin->regEndRowid, lblBrk, regRowid); in windowFullScan()
1854 if( pMWin->eExclude==TK_CURRENT ){ in windowFullScan()
1857 }else if( pMWin->eExclude!=TK_NO ){ in windowFullScan()
1862 if( pMWin->pOrderBy ){ in windowFullScan()
1863 pKeyInfo = sqlite3KeyInfoFromExprList(pParse, pMWin->pOrderBy, 0, 0); in windowFullScan()
1865 if( pMWin->eExclude==TK_TIES ){ in windowFullScan()
1882 windowAggStep(p, pMWin, csr, 0, p->regArg); in windowFullScan()
1914 Window *pMWin = p->pMWin; in windowReturnOneRow() local
1917 if( pMWin->regStartRowid ){ in windowReturnOneRow()
1923 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ in windowReturnOneRow()
1935 sqlite3VdbeAddOp3(v, OP_Column,pMWin->iEphCsr,pWin->iArgCol+1,tmpReg); in windowReturnOneRow()
1954 int iEph = pMWin->iEphCsr; in windowReturnOneRow()
1990 static int windowInitAccum(Parse *pParse, Window *pMWin){ in windowInitAccum() argument
1995 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ in windowInitAccum()
2000 if( pMWin->regStartRowid==0 ){ in windowInitAccum()
2022 static int windowCacheFrame(Window *pMWin){ in windowCacheFrame() argument
2024 if( pMWin->regStartRowid ) return 1; in windowCacheFrame()
2025 for(pWin=pMWin; pWin; pWin=pWin->pNextWin){ in windowCacheFrame()
2104 ExprList *pOrderBy = p->pMWin->pOrderBy; /* ORDER BY clause for window */ in windowCodeRangeTest()
2234 Window *pMWin = p->pMWin; in windowCodeOp() local
2238 int bPeer = (pMWin->eFrmType!=TK_ROWS); in windowCodeOp()
2245 if( op==WINDOW_AGGINVERSE && pMWin->eStart==TK_UNBOUNDED ){ in windowCodeOp()
2251 if( pMWin->eFrmType==TK_RANGE ){ in windowCodeOp()
2255 if( pMWin->eStart==TK_FOLLOWING ){ in windowCodeOp()
2275 if( op==WINDOW_RETURN_ROW && pMWin->regStartRowid==0 ){ in windowCodeOp()
2286 if( pMWin->eStart==pMWin->eEnd && regCountdown in windowCodeOp()
2287 && pMWin->eFrmType==TK_RANGE in windowCodeOp()
2303 assert( pMWin->eStart==TK_PRECEDING || pMWin->eStart==TK_FOLLOWING ); in windowCodeOp()
2316 if( pMWin->regStartRowid ){ in windowCodeOp()
2317 assert( pMWin->regEndRowid ); in windowCodeOp()
2318 sqlite3VdbeAddOp2(v, OP_AddImm, pMWin->regStartRowid, 1); in windowCodeOp()
2320 windowAggStep(p, pMWin, csr, 1, p->regArg); in windowCodeOp()
2328 if( pMWin->regStartRowid ){ in windowCodeOp()
2329 assert( pMWin->regEndRowid ); in windowCodeOp()
2330 sqlite3VdbeAddOp2(v, OP_AddImm, pMWin->regEndRowid, 1); in windowCodeOp()
2332 windowAggStep(p, pMWin, csr, 0, p->regArg); in windowCodeOp()
2355 int nReg = (pMWin->pOrderBy ? pMWin->pOrderBy->nExpr : 0); in windowCodeOp()
2358 windowIfNewPeer(pParse, pMWin->pOrderBy, regTmp, reg, addrContinue); in windowCodeOp()
2784 Window *pMWin = p->pWin; in sqlite3WindowCodeStep() local
2785 ExprList *pOrderBy = pMWin->pOrderBy; in sqlite3WindowCodeStep()
2805 assert( pMWin->eStart==TK_PRECEDING || pMWin->eStart==TK_CURRENT in sqlite3WindowCodeStep()
2806 || pMWin->eStart==TK_FOLLOWING || pMWin->eStart==TK_UNBOUNDED in sqlite3WindowCodeStep()
2808 assert( pMWin->eEnd==TK_FOLLOWING || pMWin->eEnd==TK_CURRENT in sqlite3WindowCodeStep()
2809 || pMWin->eEnd==TK_UNBOUNDED || pMWin->eEnd==TK_PRECEDING in sqlite3WindowCodeStep()
2811 assert( pMWin->eExclude==0 || pMWin->eExclude==TK_CURRENT in sqlite3WindowCodeStep()
2812 || pMWin->eExclude==TK_GROUP || pMWin->eExclude==TK_TIES in sqlite3WindowCodeStep()
2813 || pMWin->eExclude==TK_NO in sqlite3WindowCodeStep()
2821 s.pMWin = pMWin; in sqlite3WindowCodeStep()
2825 s.current.csr = pMWin->iEphCsr; in sqlite3WindowCodeStep()
2836 switch( pMWin->eStart ){ in sqlite3WindowCodeStep()
2838 if( pMWin->eFrmType!=TK_RANGE in sqlite3WindowCodeStep()
2839 && windowExprGtZero(pParse, pMWin->pStart) in sqlite3WindowCodeStep()
2845 if( windowCacheFrame(pMWin)==0 ){ in sqlite3WindowCodeStep()
2846 if( pMWin->eEnd==TK_PRECEDING ){ in sqlite3WindowCodeStep()
2847 if( pMWin->eFrmType!=TK_RANGE in sqlite3WindowCodeStep()
2848 && windowExprGtZero(pParse, pMWin->pEnd) in sqlite3WindowCodeStep()
2873 if( pMWin->eStart==TK_PRECEDING || pMWin->eStart==TK_FOLLOWING ){ in sqlite3WindowCodeStep()
2876 if( pMWin->eEnd==TK_PRECEDING || pMWin->eEnd==TK_FOLLOWING ){ in sqlite3WindowCodeStep()
2883 if( pMWin->eFrmType!=TK_ROWS ){ in sqlite3WindowCodeStep()
2885 regNewPeer = regNew + pMWin->nBufferCol; in sqlite3WindowCodeStep()
2886 if( pMWin->pPartition ) regNewPeer += pMWin->pPartition->nExpr; in sqlite3WindowCodeStep()
2906 if( pMWin->pPartition ){ in sqlite3WindowCodeStep()
2908 ExprList *pPart = pMWin->pPartition; in sqlite3WindowCodeStep()
2910 int regNewPart = regNew + pMWin->nBufferCol; in sqlite3WindowCodeStep()
2914 addr = sqlite3VdbeAddOp3(v, OP_Compare, regNewPart, pMWin->regPart, nPart); in sqlite3WindowCodeStep()
2920 sqlite3VdbeAddOp3(v, OP_Copy, regNewPart, pMWin->regPart, nPart-1); in sqlite3WindowCodeStep()
2926 addrNe = sqlite3VdbeAddOp3(v, OP_Ne, pMWin->regOne, 0, s.regRowid); in sqlite3WindowCodeStep()
2930 s.regArg = windowInitAccum(pParse, pMWin); in sqlite3WindowCodeStep()
2933 sqlite3ExprCode(pParse, pMWin->pStart, regStart); in sqlite3WindowCodeStep()
2934 windowCheckValue(pParse, regStart, 0 + (pMWin->eFrmType==TK_RANGE?3:0)); in sqlite3WindowCodeStep()
2937 sqlite3ExprCode(pParse, pMWin->pEnd, regEnd); in sqlite3WindowCodeStep()
2938 windowCheckValue(pParse, regEnd, 1 + (pMWin->eFrmType==TK_RANGE?3:0)); in sqlite3WindowCodeStep()
2941 if( pMWin->eFrmType!=TK_RANGE && pMWin->eStart==pMWin->eEnd && regStart ){ in sqlite3WindowCodeStep()
2942 int op = ((pMWin->eStart==TK_FOLLOWING) ? OP_Ge : OP_Le); in sqlite3WindowCodeStep()
2954 if( pMWin->eStart==TK_FOLLOWING && pMWin->eFrmType!=TK_RANGE && regEnd ){ in sqlite3WindowCodeStep()
2955 assert( pMWin->eEnd==TK_FOLLOWING ); in sqlite3WindowCodeStep()
2959 if( pMWin->eStart!=TK_UNBOUNDED ){ in sqlite3WindowCodeStep()
2982 if( pMWin->eStart==TK_FOLLOWING ){ in sqlite3WindowCodeStep()
2984 if( pMWin->eEnd!=TK_UNBOUNDED ){ in sqlite3WindowCodeStep()
2985 if( pMWin->eFrmType==TK_RANGE ){ in sqlite3WindowCodeStep()
2999 if( pMWin->eEnd==TK_PRECEDING ){ in sqlite3WindowCodeStep()
3000 int bRPS = (pMWin->eStart==TK_PRECEDING && pMWin->eFrmType==TK_RANGE); in sqlite3WindowCodeStep()
3008 if( pMWin->eEnd!=TK_UNBOUNDED ){ in sqlite3WindowCodeStep()
3009 if( pMWin->eFrmType==TK_RANGE ){ in sqlite3WindowCodeStep()
3039 if( pMWin->pPartition ){ in sqlite3WindowCodeStep()
3047 if( pMWin->eEnd==TK_PRECEDING ){ in sqlite3WindowCodeStep()
3048 int bRPS = (pMWin->eStart==TK_PRECEDING && pMWin->eFrmType==TK_RANGE); in sqlite3WindowCodeStep()
3052 }else if( pMWin->eStart==TK_FOLLOWING ){ in sqlite3WindowCodeStep()
3058 if( pMWin->eFrmType==TK_RANGE ){ in sqlite3WindowCodeStep()
3063 if( pMWin->eEnd==TK_UNBOUNDED ){ in sqlite3WindowCodeStep()
3068 assert( pMWin->eEnd==TK_FOLLOWING ); in sqlite3WindowCodeStep()
3093 if( pMWin->pPartition ){ in sqlite3WindowCodeStep()
3094 if( pMWin->regStartRowid ){ in sqlite3WindowCodeStep()
3095 sqlite3VdbeAddOp2(v, OP_Integer, 1, pMWin->regStartRowid); in sqlite3WindowCodeStep()
3096 sqlite3VdbeAddOp2(v, OP_Integer, 0, pMWin->regEndRowid); in sqlite3WindowCodeStep()