diff options
Diffstat (limited to 'src/include/nodes/execnodes.h')
-rw-r--r-- | src/include/nodes/execnodes.h | 15 |
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; |