88 *
99 *
1010 * IDENTIFICATION
11- * $Header: /cvsroot/pgsql/src/backend/optimizer/util/var.c,v 1.44 2003/01/15 19:35:44 tgl Exp $
11+ * $Header: /cvsroot/pgsql/src/backend/optimizer/util/var.c,v 1.45 2003/01/16 18:26:02 tgl Exp $
1212 *
1313 *-------------------------------------------------------------------------
1414 */
@@ -360,6 +360,23 @@ flatten_join_alias_vars_mutator(Node *node,
360360/* expand it; recurse in case join input is itself a join */
361361return flatten_join_alias_vars_mutator (newvar ,context );
362362}
363+
364+ /*
365+ * Since expression_tree_mutator won't touch subselects, we have to
366+ * handle them specially.
367+ */
368+ if (IsA (node ,SubLink ))
369+ {
370+ SubLink * sublink = (SubLink * )node ;
371+ SubLink * newnode ;
372+
373+ FLATCOPY (newnode ,sublink ,SubLink );
374+ MUTATE (newnode -> lefthand ,sublink -> lefthand ,List * ,
375+ flatten_join_alias_vars_mutator ,context );
376+ MUTATE (newnode -> subselect ,sublink -> subselect ,Node * ,
377+ flatten_join_alias_vars_mutator ,context );
378+ return (Node * )newnode ;
379+ }
363380if (IsA (node ,Query ))
364381{
365382/* Recurse into RTE subquery or not-yet-planned sublink subquery */
@@ -375,6 +392,7 @@ flatten_join_alias_vars_mutator(Node *node,
375392}
376393/* Already-planned tree not supported */
377394Assert (!is_subplan (node ));
395+
378396return expression_tree_mutator (node ,flatten_join_alias_vars_mutator ,
379397 (void * )context );
380398}