aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/expr.c2
-rw-r--r--src/resolve.c4
2 files changed, 4 insertions, 2 deletions
diff --git a/src/expr.c b/src/expr.c
index a329ef413..e6df332fb 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -4953,7 +4953,7 @@ int sqlite3ExprCompare(Parse *pParse, Expr *pA, Expr *pB, int iTab){
}
#ifndef SQLITE_OMIT_WINDOWFUNC
/* Justification for the assert():
- /* window functions have p->op==TK_FUNCTION but aggregate functions
+ ** window functions have p->op==TK_FUNCTION but aggregate functions
** have p->op==TK_AGG_FUNCTION. So any comparison between an aggregate
** function and a window function should have failed before reaching
** this point. And, it is not possible to have a window function and
diff --git a/src/resolve.c b/src/resolve.c
index 13deeca92..5c1dd09be 100644
--- a/src/resolve.c
+++ b/src/resolve.c
@@ -1245,11 +1245,13 @@ static int resolveOrderGroupBy(
if( sqlite3ExprCompare(0, pE, pSelect->pEList->a[j].pExpr, -1)==0 ){
#ifndef SQLITE_OMIT_WINDOWFUNC
if( pE->pWin ){
+ /* Since this window function is being changed into a reference
+ ** to the same window function the result set, remove the instance
+ ** of this window function from the Select.pWin list. */
Window **pp;
for(pp=&pSelect->pWin; *pp; pp=&(*pp)->pNextWin){
if( *pp==pE->pWin ){
*pp = (*pp)->pNextWin;
- break;
}
}
}