On 24 August 2018 at 11:34, Stephen Frost <sfr...@snowman.net> wrote: > Greetings, > > * David Rowley (david.row...@2ndquadrant.com) wrote: >> My personal opinion of only being able to completely remove the >> DISTINCT when there's a single item in the rtable (or a single base >> table) is that it's just too poor to bother with. I think such a >> solution is best left to another patch and it should be much more >> complete and be able to track the unique properties through joins. > > Doesn't that move the goalposts for this pretty far off? Is there > some reason that doing this for the single-item case will make it > difficult to implement the additional improvements you're suggesting > later?
The DISTINCT clause removal would likely need to wait until around where the distinct paths are created and all the join processing has been done. If the optimisation is deemed worthwhile, then maybe that would be the place to put this code along with a comment that explains how it can be improved to support the removal with multiple relations. > Given the cost of a DISTINCT and that we know pretty easily if one > exists or not, trying to eliminate it, even in the single-item case, > seems pretty worthwhile to me. If it makes it difficult to improve on > this later then I could see pushing back on it, but this patch doesn't > seem like its doing that. If people truly think it's worthwhile, then maybe it is, but if it's being done because it can be done then perhaps it's best not to bother. I was just thinking of the bug reports we'd get when people see it does not work with multiple relations. There's already no shortage of bug reports that are not bugs. I also wanted to keep this patch just doing the simple case that we already apply to GROUP BY, but control over the patch may well be out of my hands now. -- David Rowley http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services