pgsql: Fix assorted missing logic for GroupingFunc nodes.
От | Tom Lane |
---|---|
Тема | pgsql: Fix assorted missing logic for GroupingFunc nodes. |
Дата | |
Msg-id | E1nWPpf-000lzF-Ci@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Fix assorted missing logic for GroupingFunc nodes. The planner needs to treat GroupingFunc like Aggref for many purposes, in particular with respect to processing of the argument expressions, which are not to be evaluated at runtime. A few places hadn't gotten that memo, notably including subselect.c's processing of outer-level aggregates. This resulted in assertion failures or wrong plans for cases in which a GROUPING() construct references an outer aggregation level. Also fix missing special cases for GroupingFunc in cost_qual_eval (resulting in wrong cost estimates for GROUPING(), although it's not clear that that would affect plan shapes in practice) and in ruleutils.c (resulting in excess parentheses in pretty-print mode). Per bug #17088 from Yaoguang Chen. Back-patch to all supported branches. Richard Guo, Tom Lane Discussion: https://postgr.es/m/17088-e33882b387de7f5c@postgresql.org Branch ------ REL_14_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/48b6035f0f72c312aaa22733cb88f5290f473ac0 Modified Files -------------- src/backend/nodes/nodeFuncs.c | 2 ++ src/backend/optimizer/path/costsize.c | 6 ++++ src/backend/optimizer/plan/subselect.c | 30 ++++++++++++-------- src/backend/utils/adt/ruleutils.c | 10 +++++-- src/test/regress/expected/groupingsets.out | 45 ++++++++++++++++++++++++++++++ src/test/regress/sql/groupingsets.sql | 9 ++++++ 6 files changed, 88 insertions(+), 14 deletions(-)
В списке pgsql-committers по дате отправления: