aboutsummaryrefslogtreecommitdiff
path: root/src/resolve.c
diff options
context:
space:
mode:
authordrh <>2022-06-21 13:41:24 +0000
committerdrh <>2022-06-21 13:41:24 +0000
commitb9294de1e6e4ff73b3f1d045d0325d5a54fb90f8 (patch)
treed00c16e00a212e1c49792a58d92872d01f131da3 /src/resolve.c
parent4af6462fb811ebb1abb572a549249d0663da6c1a (diff)
downloadsqlite-b9294de1e6e4ff73b3f1d045d0325d5a54fb90f8.tar.gz
sqlite-b9294de1e6e4ff73b3f1d045d0325d5a54fb90f8.zip
Allow a HAVING clause on any aggregate query, even if there is no GROUP BY
clause. This brings SQLite into closer agreement with PostgreSQL and fixes the concern raised by [forum:/forumpost/1a7fea4651|forum post 1a7fea4651]. FossilOrigin-Name: 9322a7c21f1c22ba00e9b889223e89bc1591db6e561ce05091e905e98c1bf2b3
Diffstat (limited to 'src/resolve.c')
-rw-r--r--src/resolve.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/resolve.c b/src/resolve.c
index 175f81a10..6a36c8cf4 100644
--- a/src/resolve.c
+++ b/src/resolve.c
@@ -1824,8 +1824,8 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
sNC.uNC.pEList = p->pEList;
sNC.ncFlags |= NC_UEList;
if( p->pHaving ){
- if( !pGroupBy ){
- sqlite3ErrorMsg(pParse, "a GROUP BY clause is required before HAVING");
+ if( (p->selFlags & SF_Aggregate)==0 ){
+ sqlite3ErrorMsg(pParse, "HAVING clause on a non-aggregate query");
return WRC_Abort;
}
if( sqlite3ResolveExprNames(&sNC, p->pHaving) ) return WRC_Abort;