pgsql: Recognize self-contradictory restriction clauses for non-table r
От | Tom Lane |
---|---|
Тема | pgsql: Recognize self-contradictory restriction clauses for non-table r |
Дата | |
Msg-id | E1R7bjD-000713-St@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Recognize self-contradictory restriction clauses for non-table relations. The constraint exclusion feature checks for contradictions among scan restriction clauses, as well as contradictions between those clauses and a table's CHECK constraints. The first aspect of this testing can be useful for non-table relations (such as subqueries or functions-in-FROM), but the feature was coded with only the CHECK case in mind so we were applying it only to plain-table RTEs. Move the relation_excluded_by_constraints call so that it is applied to all RTEs not just plain tables. With the default setting of constraint_exclusion this results in no extra work, but with constraint_exclusion = ON we will detect optimizations that we missed before (at the cost of more planner cycles than we expended before). Per a gripe from Gunnlaugur Þór Briem. Experimentation with his example also showed we were not being very bright about the case where constraint exclusion is proven within a subquery within UNION ALL, so tweak the code to allow set_append_rel_pathlist to recognize such cases. Branch ------ master Details ------- http://git.postgresql.org/pg/commitdiff/7741dd6590073719688891898e85f0cb73453159 Modified Files -------------- src/backend/optimizer/path/allpaths.c | 58 ++++++++++++++++++++++----------- src/backend/optimizer/plan/planner.c | 7 ++-- src/include/optimizer/planner.h | 2 + 3 files changed, 45 insertions(+), 22 deletions(-)
В списке pgsql-committers по дате отправления: