/* ----------
* get_target_list - Parse back a SELECT target list
*
- * This is also used for RETURNING lists in INSERT/UPDATE/DELETE.
+ * This is also used for RETURNING lists in INSERT/UPDATE/DELETE/MERGE.
*
* resultDesc and colNamesVisible are as for get_query_def()
* ----------
bool hasDistinctOn pg_node_attr(query_jumble_ignore);
/* WITH RECURSIVE was specified */
bool hasRecursive pg_node_attr(query_jumble_ignore);
- /* has INSERT/UPDATE/DELETE in WITH */
+ /* has INSERT/UPDATE/DELETE/MERGE in WITH */
bool hasModifyingCTE pg_node_attr(query_jumble_ignore);
/* FOR [KEY] UPDATE/SHARE was specified */
bool hasForUpdate pg_node_attr(query_jumble_ignore);
* supports holdable cursors (the Executor results can be dumped into a
* tuplestore for access after transaction completion).
*
- * PORTAL_ONE_RETURNING: the portal contains a single INSERT/UPDATE/DELETE
- * query with a RETURNING clause (plus possibly auxiliary queries added by
- * rule rewriting). On first execution, we run the portal to completion
+ * PORTAL_ONE_RETURNING: the portal contains a single INSERT/UPDATE/DELETE/
+ * MERGE query with a RETURNING clause (plus possibly auxiliary queries added
+ * by rule rewriting). On first execution, we run the portal to completion
* and dump the primary query's results into the portal tuplestore; the
* results are then returned to the client as demanded. (We can't support
* suspension of the query partway through, because the AFTER TRIGGER code