- else if (IsA(expr, Iter))
- {
- ((Iter *) expr)->iterexpr =
- SS_replace_correlation_vars(((Iter *) expr)->iterexpr);
- }
- else if (single_node(expr))
- return expr;
- else if (or_clause(expr) || and_clause(expr) || is_opclause(expr) ||
- not_clause(expr) || is_funcclause(expr))
- ((Expr *) expr)->args = (List *)
- SS_replace_correlation_vars((Node *) ((Expr *) expr)->args);
- else if (IsA(expr, Aggreg))
- ((Aggreg *) expr)->target =
- SS_replace_correlation_vars((Node *) ((Aggreg *) expr)->target);
- else if (IsA(expr, ArrayRef))
- {
- ((ArrayRef *) expr)->refupperindexpr = (List *)
- SS_replace_correlation_vars((Node *) ((ArrayRef *) expr)->refupperindexpr);
- ((ArrayRef *) expr)->reflowerindexpr = (List *)
- SS_replace_correlation_vars((Node *) ((ArrayRef *) expr)->reflowerindexpr);
- ((ArrayRef *) expr)->refexpr =
- SS_replace_correlation_vars((Node *) ((ArrayRef *) expr)->refexpr);
- ((ArrayRef *) expr)->refassgnexpr =
- SS_replace_correlation_vars(((ArrayRef *) expr)->refassgnexpr);
- }
- else if (IsA(expr, TargetEntry))
- ((TargetEntry *) expr)->expr =
- SS_replace_correlation_vars((Node *) ((TargetEntry *) expr)->expr);
- else if (IsA(expr, SubLink))
- {
- List *le;
-
- foreach(le, ((SubLink *) expr)->oper) /* left sides only */
- {
- List *oparg = ((Expr *) lfirst(le))->args;