1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-10 01:02:56 +03:00

Fix error handling for the case where a window function is passed the wrong number of arguments.

FossilOrigin-Name: 871796bb19e61c1282d8ac97a82d8b57bde50f2a2a08004ab53136d77c138df4
This commit is contained in:
dan
2019-07-13 17:45:25 +00:00
parent ea38f4f4cc
commit 5e61c1b741
7 changed files with 33 additions and 20 deletions

View File

@@ -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