aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/transam/xlog.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/access/transam/xlog.c')
-rw-r--r--src/backend/access/transam/xlog.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index 86debf44123..71fc8ffa272 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -6339,6 +6339,14 @@ StartupXLOG(void)
StartupMultiXact();
/*
+ * Ditto commit timestamps. In a standby, we do it if setting is enabled
+ * in ControlFile; in a master we base the decision on the GUC itself.
+ */
+ if (ArchiveRecoveryRequested ?
+ ControlFile->track_commit_timestamp : track_commit_timestamp)
+ StartupCommitTs();
+
+ /*
* Recover knowledge about replay progress of known replication partners.
*/
StartupReplicationOrigin();
@@ -6565,16 +6573,11 @@ StartupXLOG(void)
ProcArrayInitRecovery(ShmemVariableCache->nextXid);
/*
- * Startup commit log, commit timestamp and subtrans only.
- * MultiXact has already been started up and other SLRUs are not
+ * Startup commit log and subtrans only. MultiXact and commit
+ * timestamp have already been started up and other SLRUs are not
* maintained during recovery and need not be started yet.
- *
- * For commit timestamps, we do this based on the control file
- * info: in a standby, we want to drive it off the state of the
- * master, not local configuration.
*/
StartupCLOG();
- StartupCommitTs(ControlFile->track_commit_timestamp);
StartupSUBTRANS(oldestActiveXID);
/*
@@ -7337,13 +7340,12 @@ StartupXLOG(void)
LWLockRelease(ProcArrayLock);
/*
- * Start up the commit log, commit timestamp and subtrans, if not already
- * done for hot standby.
+ * Start up the commit log and subtrans, if not already done for hot
+ * standby. (commit timestamps are started below, if necessary.)
*/
if (standbyState == STANDBY_DISABLED)
{
StartupCLOG();
- StartupCommitTs(track_commit_timestamp);
StartupSUBTRANS(oldestActiveXID);
}