diff options
author | dan <dan@noemail.net> | 2018-07-02 17:14:37 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2018-07-02 17:14:37 +0000 |
commit | f607bec7493d938f9b74f65dd0cfe516fe4d6eaf (patch) | |
tree | 0be11ab3acb5711b3fa7290558a0d09e302e11d0 /src/resolve.c | |
parent | 6b4b88208e41e7628005bd73718419e0a10296d4 (diff) | |
download | sqlite-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.c | 11 |
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; } } |