diff options
author | dan <dan@noemail.net> | 2018-07-02 12:07:32 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2018-07-02 12:07:32 +0000 |
commit | 7262ca94cb4308c74a504e949cdb6e3e5cc61610 (patch) | |
tree | 19fd1e9b5ceafeb0b29fba7517cc751d9b87763c /src/resolve.c | |
parent | 9f607e9c231dafcd64602fd9deee48a37ff27c07 (diff) | |
download | sqlite-7262ca94cb4308c74a504e949cdb6e3e5cc61610.tar.gz sqlite-7262ca94cb4308c74a504e949cdb6e3e5cc61610.zip |
Fix a segfault caused by invoking a regular aggregate as a window-function.
And some problems with count(*) when used as a window-function.
FossilOrigin-Name: 4f3c8a82fd1c5b14d84f2301e34cfc8d52fe4b3a60840c39e895c11f2da529d9
Diffstat (limited to 'src/resolve.c')
-rw-r--r-- | src/resolve.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/resolve.c b/src/resolve.c index b6389eba6..7c1d4b162 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -758,7 +758,11 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){ } #ifndef SQLITE_OMIT_WINDOWFUNC - if( is_agg==0 && pExpr->pWin ){ + assert( is_agg==0 || (pDef->funcFlags & SQLITE_FUNC_MINMAX) + || (pDef->xValue==0 && pDef->xInverse==0) + || (pDef->xValue && pDef->xInverse && pDef->xSFunc && pDef->xFinalize) + ); + if( pDef && pDef->xValue==0 && pExpr->pWin ){ sqlite3ErrorMsg(pParse, "%.*s() may not be used as a window function", nId, zId ); |