summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVadim B. Mikheev1997-06-12 17:26:15 +0000
committerVadim B. Mikheev1997-06-12 17:26:15 +0000
commit0f576413bc082c7ec69a8cec7f609b79070b3187 (patch)
tree7c70e536e102e4d3f01688f3bb44db45e5774fe2
parent8f846a321c44327bd02ad5691047fde41130f472 (diff)
Fix replace_agg_clause() for unary operators.
-rw-r--r--src/backend/optimizer/plan/setrefs.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/backend/optimizer/plan/setrefs.c b/src/backend/optimizer/plan/setrefs.c
index bf8c60b9e64..4527837e9d4 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.3 1997/04/24 15:54:52 vadim Exp $
+ * $Header: /cvsroot/pgsql/src/backend/optimizer/plan/setrefs.c,v 1.4 1997/06/12 17:26:15 vadim Exp $
*
*-------------------------------------------------------------------------
*/
@@ -690,10 +690,13 @@ replace_agg_clause(Node *clause, List *subplanTargetList)
* This is an operator. Recursively call this routine
* for both its left and right operands
*/
- replace_agg_clause((Node*)get_leftop((Expr*)clause),
- subplanTargetList);
- replace_agg_clause((Node*)get_rightop((Expr*)clause),
- subplanTargetList);
+ Node *left = (Node*)get_leftop((Expr*)clause);
+ Node *right = (Node*)get_rightop((Expr*)clause);
+
+ if ( left != (Node*) NULL )
+ replace_agg_clause(left, subplanTargetList);
+ if ( right != (Node*) NULL )
+ replace_agg_clause(right, subplanTargetList);
} else if (IsA(clause,Param) || IsA(clause,Const)) {
/* do nothing! */
} else {