On 2015-07-24 11:34:22 +0100, Andrew Gierth wrote:
> >>>>> "Andrew" == Andrew Gierth <andrew@tao11.riddles.org.uk> writes:
>
> Andrew> The other is that in subquery_planner, the optimization of
> Andrew> converting HAVING clauses to WHERE clauses is suppressed if
> Andrew> parse->groupingSets isn't empty. (It is empty if there's either
> Andrew> no group by clause at all, or if there's exactly one grouping
> Andrew> set, which must not be empty, however derived.) This is costing
> Andrew> us some optimizations, especially in the case of an explicit
> Andrew> GROUP BY () clause; I'll look into this.
>
> I'm inclined to go with the simplest approach here, which copies the
> quals if there are grouping sets. The only way we could safely move a
> qual without copying is if we can show that none of the grouping sets is
> empty, that is (), and at this point the grouping set list has not been
> expanded so it's not trivial to determine that.
I pushed this to both master and 9.5. While this isn't strictly a
bugfix, it seemed better to keep the branches the same at this point.