diff options
Diffstat (limited to 'src/backend/executor')
-rw-r--r-- | src/backend/executor/execPartition.c | 5 | ||||
-rw-r--r-- | src/backend/executor/nodeModifyTable.c | 6 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/backend/executor/execPartition.c b/src/backend/executor/execPartition.c index cd0ec084616..e1491f5f495 100644 --- a/src/backend/executor/execPartition.c +++ b/src/backend/executor/execPartition.c @@ -774,7 +774,8 @@ HeapTuple ConvertPartitionTupleSlot(TupleConversionMap *map, HeapTuple tuple, TupleTableSlot *new_slot, - TupleTableSlot **p_my_slot) + TupleTableSlot **p_my_slot, + bool shouldFree) { if (!map) return tuple; @@ -787,7 +788,7 @@ ConvertPartitionTupleSlot(TupleConversionMap *map, *p_my_slot = new_slot; Assert(new_slot != NULL); ExecSetSlotDescriptor(new_slot, map->outdesc); - ExecStoreTuple(tuple, new_slot, InvalidBuffer, true); + ExecStoreTuple(tuple, new_slot, InvalidBuffer, shouldFree); return tuple; } diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c index f535762e2d1..d8d89c7983c 100644 --- a/src/backend/executor/nodeModifyTable.c +++ b/src/backend/executor/nodeModifyTable.c @@ -1164,7 +1164,8 @@ lreplace:; tuple = ConvertPartitionTupleSlot(tupconv_map, tuple, proute->root_tuple_slot, - &slot); + &slot, + true); /* * Prepare for tuple routing, making it look like we're inserting @@ -1792,7 +1793,8 @@ ExecPrepareTupleRouting(ModifyTableState *mtstate, ConvertPartitionTupleSlot(proute->parent_child_tupconv_maps[partidx], tuple, proute->partition_tuple_slot, - &slot); + &slot, + true); /* Initialize information needed to handle ON CONFLICT DO UPDATE. */ Assert(mtstate != NULL); |