Re: Removing useless DISTINCT clauses - Mailing list pgsql-hackers

From David Rowley
Subject Re: Removing useless DISTINCT clauses
Date
Msg-id CAKJS1f9A3qu34njBg17paGc9oZ9_auj59hE2_hNutJBaWDKyeA@mail.gmail.com
Whole thread Raw
In response to Re: Removing useless DISTINCT clauses  (Laurenz Albe <laurenz.albe@cybertec.at>)
Responses Re: Removing useless DISTINCT clauses  (Laurenz Albe <laurenz.albe@cybertec.at>)
Re: Removing useless DISTINCT clauses  (Jim Finnerty <jfinnert@amazon.com>)
Re: Removing useless DISTINCT clauses  (Melanie Plageman <melanieplageman@gmail.com>)
List pgsql-hackers
On 22 March 2018 at 21:16, Laurenz Albe <laurenz.albe@cybertec.at> wrote:
> Would it be very difficult to extend that to "if any unique constraints are
> contained in the DISTINCT clause"?

Unfortunately, it's quite a bit more work to make that happen. It's
not just unique constraints that are required to make this work. We
also need to pay attention to NOT NULL constraints too, as we're
unable to prove function dependency when the keys have NULLs, as there
may be any number of rows containing NULL values.

The problem is that in order to properly invalidate cached plans we
must record the constraint OIDs which the plan depends on.  We can do
that for PK and UNIQUE constraints, unfortunately, we can't do it for
NOT NULL constraints as, at the moment, these are just properties of
pg_attribute.  For this to be made to work we'd need to store those in
pg_constraint too, which is more work that I'm going to do for this
patch.

-- 
 David Rowley                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services


pgsql-hackers by date:

Previous
From: Claudio Freire
Date:
Subject: Re: Faster inserts with mostly-monotonically increasing values
Next
From: Michael Paquier
Date:
Subject: Re: Typo with pg_multixact/offset in multixact.c