aboutsummaryrefslogtreecommitdiff
path: root/src/resolve.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/resolve.c')
-rw-r--r--src/resolve.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/resolve.c b/src/resolve.c
index 073fdf193..99472272f 100644
--- a/src/resolve.c
+++ b/src/resolve.c
@@ -776,13 +776,15 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
sqlite3WalkExprList(pWalker, pList);
if( is_agg ){
if( pExpr->pWin ){
- pExpr->pWin->pNextWin = pNC->pWin;
- pNC->pWin = pExpr->pWin;
+ if( 0==pNC->pWin
+ || 0==sqlite3WindowCompare(pParse, pNC->pWin, pExpr->pWin)
+ ){
+ pExpr->pWin->pNextWin = pNC->pWin;
+ pNC->pWin = pExpr->pWin;
+ }
pExpr->pWin->pFunc = pDef;
- pExpr->pWin->nArg = pExpr->x.pList->nExpr;
- }
- else
- {
+ pExpr->pWin->nArg = (pExpr->x.pList ? pExpr->x.pList->nExpr : 0);
+ }else{
NameContext *pNC2 = pNC;
pExpr->op = TK_AGG_FUNCTION;
pExpr->op2 = 0;