summaryrefslogtreecommitdiff
path: root/src/backend/optimizer/path/orindxpath.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/optimizer/path/orindxpath.c')
-rw-r--r--src/backend/optimizer/path/orindxpath.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/backend/optimizer/path/orindxpath.c b/src/backend/optimizer/path/orindxpath.c
index ba332b5eadf..1556bf74df6 100644
--- a/src/backend/optimizer/path/orindxpath.c
+++ b/src/backend/optimizer/path/orindxpath.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/optimizer/path/orindxpath.c,v 1.83 2008/01/01 19:45:50 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/optimizer/path/orindxpath.c,v 1.84 2008/01/09 20:42:27 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -90,16 +90,18 @@ create_or_index_quals(PlannerInfo *root, RelOptInfo *rel)
/*
* Find potentially interesting OR joinclauses. Note we must ignore any
- * joinclauses that are marked outerjoin_delayed, because they cannot be
- * pushed down to the per-relation level due to outer-join rules. (XXX in
- * some cases it might be possible to allow this, but it would require
- * substantially more bookkeeping about where the clause came from.)
+ * joinclauses that are marked outerjoin_delayed or !is_pushed_down,
+ * because they cannot be pushed down to the per-relation level due to
+ * outer-join rules. (XXX in some cases it might be possible to allow
+ * this, but it would require substantially more bookkeeping about where
+ * the clause came from.)
*/
foreach(i, rel->joininfo)
{
RestrictInfo *rinfo = (RestrictInfo *) lfirst(i);
if (restriction_is_or_clause(rinfo) &&
+ rinfo->is_pushed_down &&
!rinfo->outerjoin_delayed)
{
/*