This commit added enable_group_by_reordering:
commit 0452b461bc4
Author: Alexander Korotkov <[email protected]>
Date: Sun Jan 21 22:21:36 2024 +0200
Explore alternative orderings of group-by pathkeys during
optimization.
When evaluating a query with a multi-column GROUP BY clause, we can
minimize
sort operations or avoid them if we synchronize the order of GROUP
BY clauses
with the ORDER BY sort clause or sort order, which comes from the
underlying
query tree. Grouping does not imply any ordering, so we can compare
the keys in arbitrary order, and a Hash Agg leverages this. But for
Group Agg,
we simply compared keys in the order specified in the query. This
commit
explores alternative ordering of the keys, trying to find a cheaper
one.
The ordering of group keys may interact with other parts of the
query, some of
which may not be known while planning the grouping. For example,
there may be
an explicit ORDER BY clause or some other ordering-dependent
operation higher up
in the query, and using the same ordering may allow using either
incremental
sort or even eliminating the sort entirely.
The patch always keeps the ordering specified in the query,
assuming the user
might have additional insights.
This introduces a new GUC enable_group_by_reordering so that the
optimization
may be disabled if needed.
Discussion:
https://postgr.es/m/7c79e6a5-8597-74e8-0671-1c39d124c9d6%40sigaev.ru
Author: Andrei Lepikhov, Teodor Sigaev
Reviewed-by: Tomas Vondra, Claudio Freire, Gavin Flower, Dmitry
Dolgov
Reviewed-by: Robert Haas, Pavel Borisov, David Rowley, Zhihong Yu
Reviewed-by: Tom Lane, Alexander Korotkov, Richard Guo, Alena
Rybakina
It mentions it was added as a GUC to postgresql.conf, but I see no SGML
docs for this new GUC value. Would someone please add docs for this?
Thanks.
--
Bruce Momjian <[email protected]> https://momjian.us
EDB https://enterprisedb.com
Only you can decide what is important to you.