summaryrefslogtreecommitdiff
path: root/src/include/optimizer
diff options
context:
space:
mode:
authorTom Lane2012-08-30 18:32:22 +0000
committerTom Lane2012-08-30 18:33:00 +0000
commit77387f0ac859c099c6ab669db1e7a852524696c4 (patch)
treebd1de1f24e2b5b9f90e5c11eb18d11ba041eab77 /src/include/optimizer
parent35738b5906bb80bc4bb77ce1adea7dfbd3f64274 (diff)
Suppress creation of backwardly-indexed paths for LATERAL join clauses.
Given a query such as SELECT * FROM foo JOIN LATERAL (SELECT foo.var1) ss(x) ON ss.x = foo.var2 the existence of the join clause "ss.x = foo.var2" encourages indxpath.c to build a parameterized path for foo using any index available for foo.var2. This is completely useless activity, though, since foo has got to be on the outside not the inside of any nestloop join with ss. It's reasonably inexpensive to add tests that prevent creation of such paths, so let's do that.
Diffstat (limited to 'src/include/optimizer')
-rw-r--r--src/include/optimizer/paths.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/include/optimizer/paths.h b/src/include/optimizer/paths.h
index b6fb8ee5ce9..165856de0bc 100644
--- a/src/include/optimizer/paths.h
+++ b/src/include/optimizer/paths.h
@@ -127,7 +127,8 @@ extern void mutate_eclass_expressions(PlannerInfo *root,
void *context);
extern List *generate_implied_equalities_for_indexcol(PlannerInfo *root,
IndexOptInfo *index,
- int indexcol);
+ int indexcol,
+ Relids prohibited_rels);
extern bool have_relevant_eclass_joinclause(PlannerInfo *root,
RelOptInfo *rel1, RelOptInfo *rel2);
extern bool has_relevant_eclass_joinclause(PlannerInfo *root,