diff options
Diffstat (limited to 'src/backend')
-rw-r--r-- | src/backend/access/heap/heapam.c | 13 | ||||
-rw-r--r-- | src/backend/commands/copy.c | 9 |
2 files changed, 8 insertions, 14 deletions
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index b66e26bebff..74c41fac3e9 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -1875,13 +1875,11 @@ FreeBulkInsertState(BulkInsertState bistate) * The HEAP_INSERT_SKIP_FSM option is passed directly to * RelationGetBufferForTuple, which see for more info. * - * HEAP_INSERT_COMMITTED should only be specified for inserts into + * HEAP_INSERT_FROZEN should only be specified for inserts into * relfilenodes created during the current subtransaction and when * there are no prior snapshots or pre-existing portals open. - * - * HEAP_INSERT_FROZEN only has meaning when HEAP_INSERT_COMMITTED is - * also set. This causes rows to be frozen, which is an MVCC violation - * and requires explicit options chosen by user. + * This causes rows to be frozen, which is an MVCC violation and + * requires explicit options chosen by user. * * Note that these options will be applied when inserting into the heap's * TOAST table, too, if the tuple requires any out-of-line data. @@ -2086,11 +2084,10 @@ heap_prepare_insert(Relation relation, HeapTuple tup, TransactionId xid, tup->t_data->t_infomask &= ~(HEAP_XACT_MASK); tup->t_data->t_infomask2 &= ~(HEAP2_XACT_MASK); tup->t_data->t_infomask |= HEAP_XMAX_INVALID; - if (options & HEAP_INSERT_COMMITTED) + if (options & HEAP_INSERT_FROZEN) { tup->t_data->t_infomask |= HEAP_XMIN_COMMITTED; - if (options & HEAP_INSERT_FROZEN) - HeapTupleHeaderSetXmin(tup->t_data, FrozenTransactionId); + HeapTupleHeaderSetXmin(tup->t_data, FrozenTransactionId); } else HeapTupleHeaderSetXmin(tup->t_data, xid); diff --git a/src/backend/commands/copy.c b/src/backend/commands/copy.c index 479c4cb17d6..09f40667f68 100644 --- a/src/backend/commands/copy.c +++ b/src/backend/commands/copy.c @@ -1994,14 +1994,11 @@ CopyFrom(CopyState cstate) * which subtransaction created it is crucial for correctness * of this optimisation. */ - if (ThereAreNoPriorRegisteredSnapshots() && + if (cstate->freeze && + ThereAreNoPriorRegisteredSnapshots() && ThereAreNoReadyPortals() && cstate->rel->rd_newRelfilenodeSubid == GetCurrentSubTransactionId()) - { - hi_options |= HEAP_INSERT_COMMITTED; - if (cstate->freeze) - hi_options |= HEAP_INSERT_FROZEN; - } + hi_options |= HEAP_INSERT_FROZEN; } if (cstate->freeze && (hi_options & HEAP_INSERT_FROZEN) == 0) |