diff options
author | drh <> | 2022-06-21 13:41:24 +0000 |
---|---|---|
committer | drh <> | 2022-06-21 13:41:24 +0000 |
commit | b9294de1e6e4ff73b3f1d045d0325d5a54fb90f8 (patch) | |
tree | d00c16e00a212e1c49792a58d92872d01f131da3 /src/resolve.c | |
parent | 4af6462fb811ebb1abb572a549249d0663da6c1a (diff) | |
download | sqlite-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.c | 4 |
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; |