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 | E1aSii6-0007d5-QV@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 ------ master Details ------- http://git.postgresql.org/pg/commitdiff/a6897efab92bc7e645b6c6d15274b8d61c53fe8f 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 по дате отправления: