Re: Remove useless GROUP BY columns considering unique index

Zhang Mingli <zmlpostgres@gmail.com>

From: Zhang Mingli <zmlpostgres@gmail.com>
To: Peter Eisentraut <peter@eisentraut.org>, David Rowley <dgrowleyml@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-09-23T15:13:57Z
Lists: pgsql-hackers
Hi, all


I haven't paid attention to this topic in a long time, thanks all for the advices, I will study them then update.

Thanks again.


Zhang Mingli
www.hashdata.xyz
On Sep 18, 2024 at 15:50 +0800, David Rowley <dgrowleyml@gmail.com>, wrote:
> On Wed, 18 Sept 2024 at 19:28, Peter Eisentraut <peter@eisentraut.org> wrote:
> >
> > On 12.09.24 03:43, David Rowley wrote:
> > > (Likely it could just look at pg_attribute.attnotnull instead)
> >
> > That won't work because you can't record dependencies on that. (This is
> > one of the reasons for cataloging not-null constraints as real constraints.)
>
> I'm not seeing any need to record constraint dependencies for this
> optimisation. It would be different for detecting functional
> dependencies in a view using a unique constraint+not null constraints
> for ungrouped columns, but that's not what this is. This is just a
> planner optimisation. The plan can be invalidated by a relcache
> invalidation, which will happen if someone does ALTER TABLE DROP NOT
> NULL.
>
> For reference, see 5b736e9cf.
>
> David

Commits

  1. Detect redundant GROUP BY columns using UNIQUE indexes

  2. Defer remove_useless_groupby_columns() work until query_planner()