Re: [HACKERS] GSets: Fix bug involving GROUPING and HAVING together

From: Andrew Gierth <andrew(at)tao11(dot)riddles(dot)org(dot)uk>
To: Jeevan Chalke <jeevan(dot)chalke(at)enterprisedb(dot)com>, Atri Sharma <atri(dot)jiit(at)gmail(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>, Postgres-Bugs <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: [HACKERS] GSets: Fix bug involving GROUPING and HAVING together
Date: 2015-07-14 10:53:12
Message-ID: 87si8rqba3.fsf@news-spur.riddles.org.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-hackers

>>>>> "Jeevan" == Jeevan Chalke <jeevan(dot)chalke(at)enterprisedb(dot)com> writes:

Jeevan> Basically, when we have only one element in GROUING SETS, we
Jeevan> are assuming it as a simple GROUP BY with one column. Due to
Jeevan> which we are ending up with this error.

Jeevan> If we have ROLLUP/CUBE or GROUPING SETS with multiple elements,
Jeevan> then we are not getting this error.

There's two issues here. One you correctly identified, which is that
contain_agg_clause() should be true for GroupingFuncs too.

The other is that in subquery_planner, the optimization of converting
HAVING clauses to WHERE clauses is suppressed if parse->groupingSets
isn't empty. (It is empty if there's either no group by clause at all,
or if there's exactly one grouping set, which must not be empty, however
derived.) This is costing us some optimizations, especially in the case
of an explicit GROUP BY () clause; I'll look into this.

In the meantime your patch looks OK (and necessary) to me.

Jeevan> The side effect is that, if we have plain group by clause, then
Jeevan> too we can use GROUPING in HAVING clause. But I guess it is
Jeevan> fine.

GROUPING is, per spec, explicitly allowed anywhere you could have an
aggregate call, whether the group by clause is plain or not.

--
Andrew (irc:RhodiumToad)

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Jeevan Chalke 2015-07-14 11:18:13 Re: GSets: Fix bug involving GROUPING and HAVING together
Previous Message Jeevan Chalke 2015-07-14 09:21:09 GSets: Fix bug involving GROUPING and HAVING together

Browse pgsql-hackers by date

  From Date Subject
Next Message Jeevan Chalke 2015-07-14 11:18:13 Re: GSets: Fix bug involving GROUPING and HAVING together
Previous Message Simon Riggs 2015-07-14 10:14:55 Re: TABLESAMPLE patch is really in pretty sad shape