pgsql: Fix overeager pushdown of HAVING clauses when grouping sets are

Поиск
Список
Период
Сортировка
От Andres Freund
Тема pgsql: Fix overeager pushdown of HAVING clauses when grouping sets are
Дата
Msg-id E1aSii9-0007dS-1u@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Fix overeager pushdown of HAVING clauses when grouping sets are used.

In 61444bfb we started to allow HAVING clauses to be fully pushed down
into WHERE, even when grouping sets are in use. That turns out not to
work correctly, because grouping sets can "produce" NULLs, meaning that
filtering in WHERE and HAVING can have different results, even when no
aggregates or volatile functions are involved.

Instead only allow pushdown of empty grouping sets.

It'd be nice to do better, but the exact mechanics of deciding which
cases are safe are still being debated. It's important to give correct
results till we find a good solution, and such a solution might not be
appropriate for backpatching anyway.

Bug: #13863
Reported-By: 'wrb'
Diagnosed-By: Dean Rasheed
Author: Andrew Gierth
Reviewed-By: Dean Rasheed and Andres Freund
Discussion: 20160113183558.12989.56904@wrigleys.postgresql.org
Backpatch: 9.5, where grouping sets were introduced

Branch
------
REL9_5_STABLE

Details
-------
http://git.postgresql.org/pg/commitdiff/87dbc72a79bbd84aaba3a8c543a093106392da8d

Modified Files
--------------
src/backend/optimizer/plan/planner.c       | 23 ++++++++-----
src/test/regress/expected/groupingsets.out | 54 ++++++++++++++++++++++++++++++
src/test/regress/sql/groupingsets.sql      | 12 +++++++
3 files changed, 81 insertions(+), 8 deletions(-)


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

Предыдущее
От: Andres Freund
Дата:
Сообщение: pgsql: Fix overeager pushdown of HAVING clauses when grouping sets are
Следующее
От: Andres Freund
Дата:
Сообщение: pgsql: Backpatch of 7a58d19b0 to 9.4, previously omitted.