|
|
|
@ -1208,8 +1208,8 @@ RecordTransactionCommit(void) |
|
|
|
|
/*
|
|
|
|
|
* Mark ourselves as within our "commit critical section". This |
|
|
|
|
* forces any concurrent checkpoint to wait until we've updated |
|
|
|
|
* pg_clog. Without this, it is possible for the checkpoint to set |
|
|
|
|
* REDO after the XLOG record but fail to flush the pg_clog update to |
|
|
|
|
* pg_xact. Without this, it is possible for the checkpoint to set |
|
|
|
|
* REDO after the XLOG record but fail to flush the pg_xact update to |
|
|
|
|
* disk, leading to loss of the transaction commit if the system |
|
|
|
|
* crashes a little later. |
|
|
|
|
* |
|
|
|
@ -2035,7 +2035,7 @@ CommitTransaction(void) |
|
|
|
|
if (!is_parallel_worker) |
|
|
|
|
{ |
|
|
|
|
/*
|
|
|
|
|
* We need to mark our XIDs as committed in pg_clog. This is where we |
|
|
|
|
* We need to mark our XIDs as committed in pg_xact. This is where we |
|
|
|
|
* durably commit. |
|
|
|
|
*/ |
|
|
|
|
latestXid = RecordTransactionCommit(); |
|
|
|
@ -2545,7 +2545,7 @@ AbortTransaction(void) |
|
|
|
|
AtAbort_Twophase(); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Advertise the fact that we aborted in pg_clog (assuming that we got as |
|
|
|
|
* Advertise the fact that we aborted in pg_xact (assuming that we got as |
|
|
|
|
* far as assigning an XID to advertise). But if we're inside a parallel |
|
|
|
|
* worker, skip this; the user backend must be the one to write the abort |
|
|
|
|
* record. |
|
|
|
@ -4631,7 +4631,7 @@ AbortSubTransaction(void) |
|
|
|
|
s->parent->subTransactionId); |
|
|
|
|
AtSubAbort_Notify(); |
|
|
|
|
|
|
|
|
|
/* Advertise the fact that we aborted in pg_clog. */ |
|
|
|
|
/* Advertise the fact that we aborted in pg_xact. */ |
|
|
|
|
(void) RecordTransactionAbort(true); |
|
|
|
|
|
|
|
|
|
/* Post-abort cleanup */ |
|
|
|
@ -5375,7 +5375,7 @@ xact_redo_commit(xl_xact_parsed_commit *parsed, |
|
|
|
|
if (standbyState == STANDBY_DISABLED) |
|
|
|
|
{ |
|
|
|
|
/*
|
|
|
|
|
* Mark the transaction committed in pg_clog. |
|
|
|
|
* Mark the transaction committed in pg_xact. |
|
|
|
|
*/ |
|
|
|
|
TransactionIdCommitTree(xid, parsed->nsubxacts, parsed->subxacts); |
|
|
|
|
} |
|
|
|
@ -5393,7 +5393,7 @@ xact_redo_commit(xl_xact_parsed_commit *parsed, |
|
|
|
|
RecordKnownAssignedTransactionIds(max_xid); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Mark the transaction committed in pg_clog. We use async commit |
|
|
|
|
* Mark the transaction committed in pg_xact. We use async commit |
|
|
|
|
* protocol during recovery to provide information on database |
|
|
|
|
* consistency for when users try to set hint bits. It is important |
|
|
|
|
* that we do not set hint bits until the minRecoveryPoint is past |
|
|
|
@ -5530,7 +5530,7 @@ xact_redo_abort(xl_xact_parsed_abort *parsed, TransactionId xid) |
|
|
|
|
|
|
|
|
|
if (standbyState == STANDBY_DISABLED) |
|
|
|
|
{ |
|
|
|
|
/* Mark the transaction aborted in pg_clog, no need for async stuff */ |
|
|
|
|
/* Mark the transaction aborted in pg_xact, no need for async stuff */ |
|
|
|
|
TransactionIdAbortTree(xid, parsed->nsubxacts, parsed->subxacts); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
@ -5546,7 +5546,7 @@ xact_redo_abort(xl_xact_parsed_abort *parsed, TransactionId xid) |
|
|
|
|
*/ |
|
|
|
|
RecordKnownAssignedTransactionIds(max_xid); |
|
|
|
|
|
|
|
|
|
/* Mark the transaction aborted in pg_clog, no need for async stuff */ |
|
|
|
|
/* Mark the transaction aborted in pg_xact, no need for async stuff */ |
|
|
|
|
TransactionIdAbortTree(xid, parsed->nsubxacts, parsed->subxacts); |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|