diff options
Diffstat (limited to 'src/backend/optimizer/plan/createplan.c')
| -rw-r--r-- | src/backend/optimizer/plan/createplan.c | 10 |
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), |
