From c7b4047234f3b42ab7af964d63593de15dca5288 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Wed, 22 Jan 2003 19:26:35 +0000
Subject: [PATCH] Improve print_expr() a little.  It's still not very bright
 though.

---
 src/backend/nodes/print.c | 41 ++++++++++++++++++++++++++++-----------
 1 file changed, 30 insertions(+), 11 deletions(-)

diff --git a/src/backend/nodes/print.c b/src/backend/nodes/print.c
index 43b8e99893c..ccfa923c726 100644
--- a/src/backend/nodes/print.c
+++ b/src/backend/nodes/print.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/nodes/print.c,v 1.59 2003/01/15 19:35:39 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/nodes/print.c,v 1.60 2003/01/22 19:26:35 tgl Exp $
  *
  * HISTORY
  *	  AUTHOR			DATE			MAJOR EVENT
@@ -362,24 +362,43 @@ print_expr(Node *expr, List *rtable)
 		printf("%s", outputstr);
 		pfree(outputstr);
 	}
-	else if (IsA(expr, Expr))
+	else if (IsA(expr, OpExpr))
 	{
-		Expr	   *e = (Expr *) expr;
+		OpExpr	   *e = (OpExpr *) expr;
+		char	   *opname;
 
-		if (is_opclause(expr))
+		opname = get_opname(e->opno);
+		if (length(e->args) > 1)
 		{
-			char	   *opname;
-
-			print_expr(get_leftop(e), rtable);
-			opname = get_opname(((OpExpr *) e)->opno);
+			print_expr(get_leftop((Expr *) e), rtable);
 			printf(" %s ", ((opname != NULL) ? opname : "(invalid operator)"));
-			print_expr(get_rightop(e), rtable);
+			print_expr(get_rightop((Expr *) e), rtable);
 		}
 		else
-			printf("an expr");
+		{
+			/* we print prefix and postfix ops the same... */
+			printf("%s ", ((opname != NULL) ? opname : "(invalid operator)"));
+			print_expr(get_leftop((Expr *) e), rtable);
+		}
+	}
+	else if (IsA(expr, FuncExpr))
+	{
+		FuncExpr   *e = (FuncExpr *) expr;
+		char	   *funcname;
+		List	   *l;
+
+		funcname = get_func_name(e->funcid);
+		printf("%s(", ((funcname != NULL) ? funcname : "(invalid function)"));
+		foreach(l, e->args)
+		{
+			print_expr(lfirst(l), rtable);
+			if (lnext(l))
+				printf(",");
+		}
+		printf(")");
 	}
 	else
-		printf("not an expr");
+		printf("unknown expr");
 }
 
 /*
-- 
GitLab