pgsql: Fix assorted missing logic for GroupingFunc nodes.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Fix assorted missing logic for GroupingFunc nodes.
Дата
Msg-id E1nWPpf-000lzI-DD@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_13_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/dfefe38fbea4c6f003319a9921f3fd6ded5e70aa

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 по дате отправления:

Предыдущее
От: Andres Freund
Дата:
Сообщение: pgsql: pgstat: split different types of stats into separate files.
Следующее
От: Andres Freund
Дата:
Сообщение: pgsql: pgstat: reorder pgstat.[ch] contents.