From f22d8e6668e36a5855c35b04cc21a4d1593298d9 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Wed, 14 Jan 1998 19:55:53 +0000
Subject: [PATCH] Function cleanupo for List* when it should be Node *.

---
 src/backend/optimizer/plan/setrefs.c | 51 ++++++++++++++--------------
 1 file changed, 26 insertions(+), 25 deletions(-)

diff --git a/src/backend/optimizer/plan/setrefs.c b/src/backend/optimizer/plan/setrefs.c
index 55ed1fed2f0..644ff36ee90 100644
--- a/src/backend/optimizer/plan/setrefs.c
+++ b/src/backend/optimizer/plan/setrefs.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.13 1998/01/14 15:48:21 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.14 1998/01/14 19:55:53 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -42,7 +42,7 @@ static List *replace_subclause_joinvar_refs(List *clauses,
 							   List *outer_tlist, List *inner_tlist);
 static Var *replace_joinvar_refs(Var *var, List *outer_tlist, List *inner_tlist);
 static List *tlist_temp_references(Oid tempid, List *tlist);
-static void replace_result_clause(List *clause, List *subplanTargetList);
+static void replace_result_clause(Node *clause, List *subplanTargetList);
 static bool OperandIsInner(Node *opnd, int inner_relid);
 static void replace_agg_clause(Node *expr, List *targetlist);
 static Node *del_agg_clause(Node *clause);
@@ -554,7 +554,7 @@ set_result_tlist_references(Result *resultNode)
 	{
 		entry = (TargetEntry *) lfirst(t);
 		expr = (Expr *) get_expr(entry);
-		replace_result_clause((List *) expr, subplanTargetList);
+		replace_result_clause((Node *) expr, subplanTargetList);
 	}
 }
 
@@ -568,16 +568,15 @@ set_result_tlist_references(Result *resultNode)
  *
  */
 static void
-replace_result_clause(List *clause,
+replace_result_clause(Node *clause,
 					  List *subplanTargetList)	/* target list of the
 												 * subplan */
 {
 	List	   *t;
-	List	   *subClause;
-	TargetEntry *subplanVar;
 
 	if (IsA(clause, Var))
 	{
+		TargetEntry *subplanVar;
 
 		/*
 		 * Ha! A Var node!
@@ -591,15 +590,20 @@ replace_result_clause(List *clause,
 		((Var *) clause)->varno = (Index) OUTER;
 		((Var *) clause)->varattno = subplanVar->resdom->resno;
 	}
-	else if (is_funcclause((Node *) clause))
+	else if (IsA(clause, Aggreg))
 	{
+		replace_result_clause(((Aggreg *) clause)->target, subplanTargetList);
+	}
+	else if (is_funcclause(clause))
+	{
+		List   *subExpr;
 
 		/*
 		 * This is a function. Recursively call this routine for its
 		 * arguments...
 		 */
-		subClause = ((Expr *) clause)->args;
-		foreach(t, subClause)
+		subExpr = ((Expr *) clause)->args;
+		foreach(t, subExpr)
 		{
 			replace_result_clause(lfirst(t), subplanTargetList);
 		}
@@ -607,39 +611,38 @@ replace_result_clause(List *clause,
 	else if (IsA(clause, ArrayRef))
 	{
 		ArrayRef   *aref = (ArrayRef *) clause;
-
+		
 		/*
 		 * This is an arrayref. Recursively call this routine for its
 		 * expression and its index expression...
 		 */
-		subClause = aref->refupperindexpr;
-		foreach(t, subClause)
+		foreach(t, aref->refupperindexpr)
 		{
 			replace_result_clause(lfirst(t), subplanTargetList);
 		}
-		subClause = aref->reflowerindexpr;
-		foreach(t, subClause)
+		foreach(t, aref->reflowerindexpr)
 		{
 			replace_result_clause(lfirst(t), subplanTargetList);
 		}
-		replace_result_clause((List *) aref->refexpr,
+		replace_result_clause(aref->refexpr,
 							  subplanTargetList);
-		replace_result_clause((List *) aref->refassgnexpr,
+		replace_result_clause(aref->refassgnexpr,
 							  subplanTargetList);
 	}
-	else if (is_opclause((Node *) clause))
+	else if (is_opclause(clause))
 	{
+		Node *subNode;
 
 		/*
 		 * This is an operator. Recursively call this routine for both its
 		 * left and right operands
 		 */
-		subClause = (List *) get_leftop((Expr *) clause);
-		replace_result_clause(subClause, subplanTargetList);
-		subClause = (List *) get_rightop((Expr *) clause);
-		replace_result_clause(subClause, subplanTargetList);
+		subNode = (Node *)get_leftop((Expr *) clause);
+		replace_result_clause(subNode, subplanTargetList);
+		subNode = (Node *) get_rightop((Expr *) clause);
+		replace_result_clause(subNode, subplanTargetList);
 	}
-	else if (IsA(clause, Param) ||IsA(clause, Const))
+	else if (IsA(clause, Param) || IsA(clause, Const))
 	{
 		/* do nothing! */
 	}
@@ -731,10 +734,9 @@ static void
 replace_agg_clause(Node *clause, List *subplanTargetList)
 {
 	List	   *t;
-	TargetEntry *subplanVar;
-
 	if (IsA(clause, Var))
 	{
+		TargetEntry *subplanVar;
 
 		/*
 		 * Ha! A Var node!
@@ -784,7 +786,6 @@ replace_agg_clause(Node *clause, List *subplanTargetList)
 	}
 	else if (is_opclause(clause))
 	{
-
 		/*
 		 * This is an operator. Recursively call this routine for both its
 		 * left and right operands
-- 
GitLab