On 22 March 2018 at 21:16, Laurenz Albe <laurenz.a...@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