summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/nodes/outfuncs.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
index b5af904c183..69fd5b29805 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
@@ -15,9 +15,13 @@
* have an output function defined here (as well as an input function
* in readfuncs.c). In addition, plan nodes should have input and
* output functions so that they can be sent to parallel workers.
+ *
* For use in debugging, we also provide output functions for nodes
- * that appear in raw parsetrees and path. These nodes however need
- * not have input functions.
+ * that appear in raw parsetrees and planner Paths. These node types
+ * need not have input functions. Output support for raw parsetrees
+ * is somewhat incomplete, too; in particular, utility statements are
+ * almost entirely unsupported. We try to support everything that can
+ * appear in a raw SELECT, though.
*
*-------------------------------------------------------------------------
*/
@@ -3347,6 +3351,20 @@ _outParamRef(StringInfo str, const ParamRef *node)
WRITE_LOCATION_FIELD(location);
}
+/*
+ * Node types found in raw parse trees (supported for debug purposes)
+ */
+
+static void
+_outRawStmt(StringInfo str, const RawStmt *node)
+{
+ WRITE_NODE_TYPE("RAWSTMT");
+
+ WRITE_NODE_FIELD(stmt);
+ WRITE_LOCATION_FIELD(stmt_location);
+ WRITE_INT_FIELD(stmt_len);
+}
+
static void
_outAConst(StringInfo str, const A_Const *node)
{
@@ -4252,6 +4270,9 @@ outNode(StringInfo str, const void *obj)
case T_ParamRef:
_outParamRef(str, obj);
break;
+ case T_RawStmt:
+ _outRawStmt(str, obj);
+ break;
case T_A_Const:
_outAConst(str, obj);
break;