diff options
Diffstat (limited to 'src/backend/nodes/copyfuncs.c')
-rw-r--r-- | src/backend/nodes/copyfuncs.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/backend/nodes/copyfuncs.c b/src/backend/nodes/copyfuncs.c index 2118a333a39..6ce3984bff0 100644 --- a/src/backend/nodes/copyfuncs.c +++ b/src/backend/nodes/copyfuncs.c @@ -203,6 +203,31 @@ _copyAppend(Append *from) } /* + * _copyMergeAppend + */ +static MergeAppend * +_copyMergeAppend(MergeAppend *from) +{ + MergeAppend *newnode = makeNode(MergeAppend); + + /* + * copy node superclass fields + */ + CopyPlanFields((Plan *) from, (Plan *) newnode); + + /* + * copy remainder of node + */ + COPY_NODE_FIELD(mergeplans); + COPY_SCALAR_FIELD(numCols); + COPY_POINTER_FIELD(sortColIdx, from->numCols * sizeof(AttrNumber)); + COPY_POINTER_FIELD(sortOperators, from->numCols * sizeof(Oid)); + COPY_POINTER_FIELD(nullsFirst, from->numCols * sizeof(bool)); + + return newnode; +} + +/* * _copyRecursiveUnion */ static RecursiveUnion * @@ -3625,6 +3650,9 @@ copyObject(void *from) case T_Append: retval = _copyAppend(from); break; + case T_MergeAppend: + retval = _copyMergeAppend(from); + break; case T_RecursiveUnion: retval = _copyRecursiveUnion(from); break; |