aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/gist/gistget.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2011-09-24 19:33:16 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2011-09-24 19:33:16 -0400
commit7741dd6590073719688891898e85f0cb73453159 (patch)
tree98b57a56460a9b9313609e598efe1b7cf11a6f13 /src/backend/access/gist/gistget.c
parent337c0b03614c45516f2c3ec956405713bb264d54 (diff)
downloadpostgresql-7741dd6590073719688891898e85f0cb73453159.tar.gz
postgresql-7741dd6590073719688891898e85f0cb73453159.zip
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.
Diffstat (limited to 'src/backend/access/gist/gistget.c')
0 files changed, 0 insertions, 0 deletions