diff --git a/src/backend/distributed/deparser/ruleutils_17.c b/src/backend/distributed/deparser/ruleutils_17.c index 43720873b..706277277 100644 --- a/src/backend/distributed/deparser/ruleutils_17.c +++ b/src/backend/distributed/deparser/ruleutils_17.c @@ -3874,8 +3874,13 @@ get_merge_query_def(Query *query, deparse_context *context, appendStringInfoString(buf, "DO NOTHING"); } - /* No RETURNING support in MERGE yet */ - Assert(query->returningList == NIL); + /* Add RETURNING if present */ + if (query->returningList) + { + appendContextKeyword(context, " RETURNING", + -PRETTYINDENT_STD, PRETTYINDENT_STD, 1); + get_target_list(query->returningList, context, NULL, colNamesVisible); + } ereport(DEBUG1, (errmsg("", buf->data))); } @@ -5033,6 +5038,7 @@ isSimpleNode(Node *node, Node *parentNode, int prettyFlags) case T_Aggref: case T_GroupingFunc: case T_WindowFunc: + case T_MergeSupportFunc: case T_FuncExpr: case T_JsonConstructorExpr: /* function-like: name(..) or name[..] */ @@ -5384,6 +5390,10 @@ get_rule_expr(Node *node, deparse_context *context, get_windowfunc_expr((WindowFunc *) node, context); break; + case T_MergeSupportFunc: + appendStringInfoString(buf, "MERGE_ACTION()"); + break; + case T_SubscriptingRef: { SubscriptingRef *sbsref = (SubscriptingRef *) node;