diff options
author | dan <dan@noemail.net> | 2019-07-13 17:45:25 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2019-07-13 17:45:25 +0000 |
commit | 5e61c1b741b3bf6f93445f30454925e430c3ebea (patch) | |
tree | 8d8f5a0b2e2f90083a51b3bb62a71e7419382872 /src/resolve.c | |
parent | ea38f4f4ccd5354fd47f5419c84ddef4d2f0c2c6 (diff) | |
download | sqlite-5e61c1b741b3bf6f93445f30454925e430c3ebea.tar.gz sqlite-5e61c1b741b3bf6f93445f30454925e430c3ebea.zip |
Fix error handling for the case where a window function is passed the wrong number of arguments.
FossilOrigin-Name: 871796bb19e61c1282d8ac97a82d8b57bde50f2a2a08004ab53136d77c138df4
Diffstat (limited to 'src/resolve.c')
-rw-r--r-- | src/resolve.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/resolve.c b/src/resolve.c index 872d04f57..54475f6d0 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -851,13 +851,6 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){ sqlite3ErrorMsg(pParse, "misuse of %s function %.*s()",zType,nId,zId); pNC->nErr++; is_agg = 0; - }else if( is_agg==0 && ExprHasProperty(pExpr, EP_WinFunc) ){ - assert( !IsWindowFunc(pExpr) ); - sqlite3ErrorMsg(pParse, - "filter clause may not be used with non-aggregate %.*s()", - nId, zId - ); - pNC->nErr++; } #else if( (is_agg && (pNC->ncFlags & NC_AllowAgg)==0) ){ @@ -878,6 +871,15 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){ nId, zId); pNC->nErr++; } +#ifndef SQLITE_OMIT_WINDOWFUNC + else if( is_agg==0 && ExprHasProperty(pExpr, EP_WinFunc) ){ + sqlite3ErrorMsg(pParse, + "FILTER may not be used with non-aggregate %.*s()", + nId, zId + ); + pNC->nErr++; + } +#endif if( is_agg ){ /* Window functions may not be arguments of aggregate functions. ** Or arguments of other window functions. But aggregate functions |