pgsql: Fix planner failure in some cases of sorting by an aggregate.
От | Tom Lane |
---|---|
Тема | pgsql: Fix planner failure in some cases of sorting by an aggregate. |
Дата | |
Msg-id | E1lYsRd-0002un-UC@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Fix planner failure in some cases of sorting by an aggregate. An oversight introduced by the incremental-sort patches caused "could not find pathkey item to sort" errors in some situations where a sort key involves an aggregate or window function. The basic problem here is that find_em_expr_usable_for_sorting_rel isn't properly modeling what prepare_sort_from_pathkeys will do later. Rather than hoping we can keep those functions in sync, let's refactor so that they actually share the code for identifying a suitable sort expression. With this refactoring, tlist.c's tlist_member_ignore_relabel is unused. I removed it in HEAD but left it in place in v13, in case any extensions are using it. Per report from Luc Vlaming. Back-patch to v13 where the problem arose. James Coleman and Tom Lane Discussion: https://postgr.es/m/91f3ec99-85a4-fa55-ea74-33f85a5c651f@swarm64.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/375398244168add84a884347625d14581a421e71 Modified Files -------------- src/backend/optimizer/path/equivclass.c | 255 ++++++++++++++++++++----- src/backend/optimizer/plan/createplan.c | 118 +----------- src/backend/optimizer/util/tlist.c | 28 --- src/include/optimizer/paths.h | 8 + src/include/optimizer/tlist.h | 1 - src/test/regress/expected/incremental_sort.out | 26 +++ src/test/regress/sql/incremental_sort.sql | 7 + 7 files changed, 262 insertions(+), 181 deletions(-)
В списке pgsql-committers по дате отправления: