summaryrefslogtreecommitdiff
path: root/src/backend/optimizer/plan/createplan.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/optimizer/plan/createplan.c')
-rw-r--r--src/backend/optimizer/plan/createplan.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c
index 2783e3917f..c56cc61c80 100644
--- a/src/backend/optimizer/plan/createplan.c
+++ b/src/backend/optimizer/plan/createplan.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/createplan.c,v 1.9 1997/03/18 18:40:05 scrappy Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/createplan.c,v 1.10 1997/04/22 03:30:36 vadim Exp $
*
*-------------------------------------------------------------------------
*/
@@ -734,10 +734,16 @@ switch_outer(List *clauses)
Expr *temp = NULL;
List *i = NIL;
Expr *clause;
+ Node *op;
foreach(i,clauses) {
clause = lfirst(i);
- if(var_is_outer(get_rightop(clause))) {
+ op = (Node*)get_rightop(clause);
+ if ( IsA (op, ArrayRef) )
+ op = ((ArrayRef*)op)->refexpr;
+ Assert ( IsA (op, Var) );
+ if ( var_is_outer ((Var*)op) )
+ {
temp = make_clause(clause->opType, clause->oper,
lcons(get_rightop(clause),
lcons(get_leftop(clause),