Re: Add proper planner support for ORDER BY / DISTINCT aggregates
David Rowley <dgrowleyml@gmail.com>
From: David Rowley <dgrowleyml@gmail.com>
To: Ronan Dunklau <ronan.dunklau@aiven.io>
Cc: PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>,
Ranier Vilela <ranier.vf@gmail.com>
Date: 2021-07-17T02:36:09Z
Lists: pgsql-hackers
Attachments
- v5-0001-Add-planner-support-for-ORDER-BY-aggregates.patch (application/octet-stream) patch v5-0001
On Fri, 16 Jul 2021 at 22:00, David Rowley <dgrowleyml@gmail.com> wrote: > > On Fri, 16 Jul 2021 at 18:04, David Rowley <dgrowleyml@gmail.com> wrote: > > What we maybe could consider instead would be to pick the first Aggref > > then look for the most sorted derivative of that then tally up the > > number of Aggrefs that can be sorted using those pathkeys, then repeat > > that process for the remaining Aggrefs that didn't have the same > > prefix then use the pathkeys for the set with the most Aggrefs. We > > could still tiebreak on the targetlist position so at least it's not > > random which ones we pick. Now that we have a list of Aggrefs that are > > deduplicated in the planner thanks to 0a2bc5d61e it should be fairly > > easy to do that. > > I've attached a patch which does as I mention above. Looks like I did a sloppy job of that. I messed up the condition in standard_qp_callback() that sets the ORDER BY aggregate pathkeys so that it accidentally set them when there was an unsortable GROUP BY clause, as highlighted by the postgres_fdw tests failing. I've now added a comment to explain why the condition is the way it is so that I don't forget again. Here's a cleaned-up version that passes make check-world. David
Commits
-
Don't presort ORDER BY/DISTINCT Aggrefs with volatile functions
- da5800d5fa63 16.0 landed
-
Add enable_presorted_aggregate GUC
- 3226f47282a0 16.0 landed
-
Remove pessimistic cost penalization from Incremental Sort
- 4a29eabd1d91 16.0 landed
-
Fix hypothetical problem passing the wrong GROUP BY pathkeys
- af7d270dd3c7 16.0 landed
-
Remove unused fields from ExprEvalStep
- 9fc1776dda9f 16.0 landed
-
Improve performance of ORDER BY / DISTINCT aggregates
- 1349d2790bf4 16.0 landed
-
Refactor function parse_subscription_options.
- 8aafb0261675 15.0 cited