summaryrefslogtreecommitdiff
path: root/src/include/nodes/execnodes.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/nodes/execnodes.h')
-rw-r--r--src/include/nodes/execnodes.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/include/nodes/execnodes.h b/src/include/nodes/execnodes.h
index 1774c56ae31..e7ff8e4992f 100644
--- a/src/include/nodes/execnodes.h
+++ b/src/include/nodes/execnodes.h
@@ -544,9 +544,11 @@ typedef struct ResultRelInfo
/* ON CONFLICT evaluation state */
OnConflictSetState *ri_onConflict;
- /* for MERGE, lists of MergeActionState */
- List *ri_matchedMergeAction;
- List *ri_notMatchedMergeAction;
+ /* for MERGE, lists of MergeActionState (one per MergeMatchKind) */
+ List *ri_MergeActions[3];
+
+ /* for MERGE, expr state for checking the join condition */
+ ExprState *ri_MergeJoinCondition;
/* partition check expression state (NULL if not set up yet) */
ExprState *ri_PartitionCheckExpr;
@@ -1401,6 +1403,13 @@ typedef struct ModifyTableState
/* For MERGE, the action currently being executed */
MergeActionState *mt_merge_action;
+ /*
+ * For MERGE, if there is a pending NOT MATCHED [BY TARGET] action to be
+ * performed, this will be the last tuple read from the subplan; otherwise
+ * it will be NULL --- see the comments in ExecMerge().
+ */
+ TupleTableSlot *mt_merge_pending_not_matched;
+
/* tuple counters for MERGE */
double mt_merge_inserted;
double mt_merge_updated;