From 12d5c30c8c0c848bee9a9d04efde6d90c59c8a50 Mon Sep 17 00:00:00 2001
From: "Thomas G. Lockhart" <lockhart@fourpalms.org>
Date: Tue, 23 Dec 1997 19:50:54 +0000
Subject: [PATCH] Add routines to print AExpr, Ident, and AConst parsing
 structures.

---
 src/backend/nodes/outfuncs.c | 44 +++++++++++++++++++++++++++++++++++-
 1 file changed, 43 insertions(+), 1 deletion(-)

diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
index c7e412ced9c..7b4bfc61e31 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.12 1997/12/18 12:53:51 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/nodes/outfuncs.c,v 1.13 1997/12/23 19:50:54 thomas Exp $
  *
  * NOTES
  *	  Every (plan) node in POSTGRES has an associated "out" routine which
@@ -1547,6 +1547,18 @@ _outStream(StringInfo str, Stream *node)
 	appendStringInfo(str, buf);
 }
 
+static void
+_outAExpr(StringInfo str, A_Expr *node)
+{
+	char		buf[500];
+
+	sprintf(buf, "EXPR %s", node->opname);
+	appendStringInfo(str, buf);
+	_outNode(str, node->lexpr);
+	_outNode(str, node->rexpr);
+	return;
+}
+
 static void
 _outValue(StringInfo str, Value *value)
 {
@@ -1572,6 +1584,27 @@ _outValue(StringInfo str, Value *value)
 	return;
 }
 
+static void
+_outIdent(StringInfo str, Ident *node)
+{
+	char		buf[500];
+
+	sprintf(buf, "IDENT %s", node->name);
+	appendStringInfo(str, buf);
+	return;
+}
+
+static void
+_outAConst(StringInfo str, A_Const *node)
+{
+	char		buf[500];
+
+	sprintf(buf, "CONST ");
+	appendStringInfo(str, buf);
+	_outValue(str, &(node->val));
+	return;
+}
+
 /*
  * _outNode -
  *	  converts a Node into ascii string and append it to 'str'
@@ -1763,6 +1796,15 @@ _outNode(StringInfo str, void *obj)
 			case T_Float:
 				_outValue(str, obj);
 				break;
+			case T_A_Expr:
+				_outAExpr(str, obj);
+				break;
+			case T_Ident:
+				_outIdent(str, obj);
+				break;
+			case T_A_Const:
+				_outAConst(str, obj);
+				break;
 			default:
 				elog(NOTICE, "_outNode: don't know how to print type %d",
 					 nodeTag(obj));
-- 
GitLab