diff options
author | drh <> | 2023-10-19 20:46:22 +0000 |
---|---|---|
committer | drh <> | 2023-10-19 20:46:22 +0000 |
commit | f5e487d1685e705daa6eb79a26252f83f29c610a (patch) | |
tree | 9daed06b083dc28224a282ad899817eaf237b478 /src/resolve.c | |
parent | c7ad9f65fa49b67c4ff5491f0231daa18f78afeb (diff) | |
parent | dcf76a8bbda9028c391945834d67471fc8e2821f (diff) | |
download | sqlite-f5e487d1685e705daa6eb79a26252f83f29c610a.tar.gz sqlite-f5e487d1685e705daa6eb79a26252f83f29c610a.zip |
Merge recent trunk enhancements into the jsonb branch.
FossilOrigin-Name: f47a8d0a207a8442a7f621b070ce9dd1d6013ce26bcf68165d20bb379bd478a0
Diffstat (limited to 'src/resolve.c')
-rw-r--r-- | src/resolve.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/resolve.c b/src/resolve.c index bd890c9f8..7eba26938 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -1052,6 +1052,7 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){ Window *pWin = (IsWindowFunc(pExpr) ? pExpr->y.pWin : 0); #endif assert( !ExprHasProperty(pExpr, EP_xIsSelect|EP_IntValue) ); + assert( pExpr->pLeft==0 || pExpr->pLeft->op==TK_ORDER ); zId = pExpr->u.zToken; pDef = sqlite3FindFunction(pParse->db, zId, n, enc, 0); if( pDef==0 ){ @@ -1193,6 +1194,10 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){ pNC->nNcErr++; } #endif + else if( is_agg==0 && pExpr->pLeft ){ + sqlite3ExprOrderByAggregateError(pParse, pExpr); + pNC->nNcErr++; + } if( is_agg ){ /* Window functions may not be arguments of aggregate functions. ** Or arguments of other window functions. But aggregate functions @@ -1211,6 +1216,11 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){ #endif sqlite3WalkExprList(pWalker, pList); if( is_agg ){ + if( pExpr->pLeft ){ + assert( pExpr->pLeft->op==TK_ORDER ); + assert( ExprUseXList(pExpr->pLeft) ); + sqlite3WalkExprList(pWalker, pExpr->pLeft->x.pList); + } #ifndef SQLITE_OMIT_WINDOWFUNC if( pWin ){ Select *pSel = pNC->pWinSelect; |