aboutsummaryrefslogtreecommitdiff
path: root/src/backend/nodes/outfuncs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/nodes/outfuncs.c')
-rw-r--r--src/backend/nodes/outfuncs.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c
index 55665ca20e5..ee2aeb0ad30 100644
--- a/src/backend/nodes/outfuncs.c
+++ b/src/backend/nodes/outfuncs.c
@@ -345,6 +345,32 @@ _outAppend(StringInfo str, Append *node)
}
static void
+_outMergeAppend(StringInfo str, MergeAppend *node)
+{
+ int i;
+
+ WRITE_NODE_TYPE("MERGEAPPEND");
+
+ _outPlanInfo(str, (Plan *) node);
+
+ WRITE_NODE_FIELD(mergeplans);
+
+ WRITE_INT_FIELD(numCols);
+
+ appendStringInfo(str, " :sortColIdx");
+ for (i = 0; i < node->numCols; i++)
+ appendStringInfo(str, " %d", node->sortColIdx[i]);
+
+ appendStringInfo(str, " :sortOperators");
+ for (i = 0; i < node->numCols; i++)
+ appendStringInfo(str, " %u", node->sortOperators[i]);
+
+ appendStringInfo(str, " :nullsFirst");
+ for (i = 0; i < node->numCols; i++)
+ appendStringInfo(str, " %s", booltostr(node->nullsFirst[i]));
+}
+
+static void
_outRecursiveUnion(StringInfo str, RecursiveUnion *node)
{
int i;
@@ -1460,6 +1486,16 @@ _outAppendPath(StringInfo str, AppendPath *node)
}
static void
+_outMergeAppendPath(StringInfo str, MergeAppendPath *node)
+{
+ WRITE_NODE_TYPE("MERGEAPPENDPATH");
+
+ _outPathInfo(str, (Path *) node);
+
+ WRITE_NODE_FIELD(subpaths);
+}
+
+static void
_outResultPath(StringInfo str, ResultPath *node)
{
WRITE_NODE_TYPE("RESULTPATH");
@@ -2498,6 +2534,9 @@ _outNode(StringInfo str, void *obj)
case T_Append:
_outAppend(str, obj);
break;
+ case T_MergeAppend:
+ _outMergeAppend(str, obj);
+ break;
case T_RecursiveUnion:
_outRecursiveUnion(str, obj);
break;
@@ -2745,6 +2784,9 @@ _outNode(StringInfo str, void *obj)
case T_AppendPath:
_outAppendPath(str, obj);
break;
+ case T_MergeAppendPath:
+ _outMergeAppendPath(str, obj);
+ break;
case T_ResultPath:
_outResultPath(str, obj);
break;