pgsql: Reject SELECT ... GROUP BY GROUPING SETS (()) FOR UPDATE.

Поиск
Список
Период
Сортировка
От Tom Lane
Тема pgsql: Reject SELECT ... GROUP BY GROUPING SETS (()) FOR UPDATE.
Дата
Msg-id E1lo65K-0007Hb-DK@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Reject SELECT ... GROUP BY GROUPING SETS (()) FOR UPDATE.

This case should be disallowed, just as FOR UPDATE with a plain
GROUP BY is disallowed; FOR UPDATE only makes sense when each row
of the query result can be identified with a single table row.
However, we missed teaching CheckSelectLocking() to check
groupingSets as well as groupClause, so that it would allow
degenerate grouping sets.  That resulted in a bad plan and
a null-pointer dereference in the executor.

Looking around for other instances of the same bug, the only one
I found was in examine_simple_variable().  That'd just lead to
silly estimates, but it should be fixed too.

Per private report from Yaoguang Chen.
Back-patch to all supported branches.

Branch
------
REL_10_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/39862dde4beecdf1c5f84a20fe3bb6f4ba928edb

Modified Files
--------------
src/backend/parser/analyze.c         | 2 +-
src/backend/utils/adt/selfuncs.c     | 3 ++-
src/test/regress/expected/errors.out | 5 +++++
src/test/regress/sql/errors.sql      | 4 ++++
4 files changed, 12 insertions(+), 2 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Amit Kapila
Дата:
Сообщение: pgsql: pgoutput: Fix memory leak due to RelationSyncEntry.map.
Следующее
От: Noah Misch
Дата:
Сообщение: pgsql: Fix missing gettimeofday() declaration.