| From: | Alexander Korotkov <akorotkov(at)postgresql(dot)org> |
|---|---|
| To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
| Subject: | pgsql: Fix asymmetry in setting EquivalenceClass.ec_sortref |
| Date: | 2024-06-06 10:45:49 |
| Message-ID: | E1sFAcu-000Fms-IV@gemulon.postgresql.org |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-committers |
Fix asymmetry in setting EquivalenceClass.ec_sortref
0452b461bc made get_eclass_for_sort_expr() always set
EquivalenceClass.ec_sortref if it's not done yet. This leads to an asymmetric
situation when whoever first looks for the EquivalenceClass sets the
ec_sortref. It is also counterintuitive that get_eclass_for_sort_expr()
performs modification of data structures.
This commit makes make_pathkeys_for_sortclauses_extended() responsible for
setting EquivalenceClass.ec_sortref. Now we set the
EquivalenceClass.ec_sortref's needed to explore alternative GROUP BY ordering
specifically during building pathkeys by the list of grouping clauses.
Discussion: https://postgr.es/m/17037754-f187-4138-8285-0e2bfebd0dea%40postgrespro.ru
Reported-by: Tom Lane
Author: Andrei Lepikhov
Reviewed-by: Alexander Korotkov, Pavel Borisov
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/199012a3d844c6283e0ab4b1139440840a91433d
Modified Files
--------------
src/backend/optimizer/path/equivclass.c | 13 +--------
src/backend/optimizer/path/pathkeys.c | 18 ++++++++++--
src/backend/optimizer/plan/planner.c | 16 ++++++++---
src/include/optimizer/paths.h | 3 +-
src/test/regress/expected/aggregates.out | 47 ++++++++++++++++++++++++++++++++
src/test/regress/sql/aggregates.sql | 14 ++++++++++
6 files changed, 92 insertions(+), 19 deletions(-)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Heikki Linnakangas | 2024-06-06 15:56:59 | pgsql: Make RelationFlushRelation() work without ResourceOwner during a |
| Previous Message | Bruce Momjian | 2024-06-06 00:53:17 | pgsql: doc PG 17 relnotes: adjust integer bin/oct funcs and psql tab |