aboutsummaryrefslogtreecommitdiff
path: root/src/resolve.c
diff options
context:
space:
mode:
authordan <dan@noemail.net>2018-07-02 17:14:37 +0000
committerdan <dan@noemail.net>2018-07-02 17:14:37 +0000
commitf607bec7493d938f9b74f65dd0cfe516fe4d6eaf (patch)
tree0be11ab3acb5711b3fa7290558a0d09e302e11d0 /src/resolve.c
parent6b4b88208e41e7628005bd73718419e0a10296d4 (diff)
downloadsqlite-f607bec7493d938f9b74f65dd0cfe516fe4d6eaf.tar.gz
sqlite-f607bec7493d938f9b74f65dd0cfe516fe4d6eaf.zip
Fix a segfault caused by having identical window functions in the select-list
and ORDER BY clause of a SELECT statement. FossilOrigin-Name: 693b4350d741391226a33ab6a05eaad61e8ef1590176f01e8aed2a212e2d6419
Diffstat (limited to 'src/resolve.c')
-rw-r--r--src/resolve.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/resolve.c b/src/resolve.c
index 7c1d4b162..13deeca92 100644
--- a/src/resolve.c
+++ b/src/resolve.c
@@ -1243,6 +1243,17 @@ static int resolveOrderGroupBy(
}
for(j=0; j<pSelect->pEList->nExpr; j++){
if( sqlite3ExprCompare(0, pE, pSelect->pEList->a[j].pExpr, -1)==0 ){
+#ifndef SQLITE_OMIT_WINDOWFUNC
+ if( pE->pWin ){
+ Window **pp;
+ for(pp=&pSelect->pWin; *pp; pp=&(*pp)->pNextWin){
+ if( *pp==pE->pWin ){
+ *pp = (*pp)->pNextWin;
+ break;
+ }
+ }
+ }
+#endif
pItem->u.x.iOrderByCol = j+1;
}
}