aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeModifyTable.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/executor/nodeModifyTable.c')
-rw-r--r--src/backend/executor/nodeModifyTable.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c
index f2534f20622..8d17425abea 100644
--- a/src/backend/executor/nodeModifyTable.c
+++ b/src/backend/executor/nodeModifyTable.c
@@ -1442,14 +1442,18 @@ fireASTriggers(ModifyTableState *node)
case CMD_INSERT:
if (node->mt_onconflict == ONCONFLICT_UPDATE)
ExecASUpdateTriggers(node->ps.state,
- resultRelInfo);
- ExecASInsertTriggers(node->ps.state, resultRelInfo);
+ resultRelInfo,
+ node->mt_transition_capture);
+ ExecASInsertTriggers(node->ps.state, resultRelInfo,
+ node->mt_transition_capture);
break;
case CMD_UPDATE:
- ExecASUpdateTriggers(node->ps.state, resultRelInfo);
+ ExecASUpdateTriggers(node->ps.state, resultRelInfo,
+ node->mt_transition_capture);
break;
case CMD_DELETE:
- ExecASDeleteTriggers(node->ps.state, resultRelInfo);
+ ExecASDeleteTriggers(node->ps.state, resultRelInfo,
+ node->mt_transition_capture);
break;
default:
elog(ERROR, "unknown operation");
@@ -2304,6 +2308,10 @@ ExecEndModifyTable(ModifyTableState *node)
{
int i;
+ /* Free transition tables */
+ if (node->mt_transition_capture != NULL)
+ DestroyTransitionCaptureState(node->mt_transition_capture);
+
/*
* Allow any FDWs to shut down
*/