]> granicus.if.org Git - postgresql/commitdiff
Fix timestamp in end-of-recovery WAL records.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Fri, 19 Dec 2014 15:00:21 +0000 (17:00 +0200)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Fri, 19 Dec 2014 15:04:20 +0000 (17:04 +0200)
We used time(null) to set a TimestampTz field, which gave bogus results.
Noticed while looking at pg_xlogdump output.

Backpatch to 9.3 and above, where the fast promotion was introduced.

src/backend/access/transam/xlog.c

index 53044eb4f68df017e69094d5f7749f179693d76e..9e45976179788c62f9461efb1932c5c0874e7ad6 100644 (file)
@@ -8076,7 +8076,7 @@ CreateEndOfRecoveryRecord(void)
        if (!RecoveryInProgress())
                elog(ERROR, "can only be used to end recovery");
 
-       xlrec.end_time = time(NULL);
+       xlrec.end_time = GetCurrentTimestamp();
 
        WALInsertLockAcquireExclusive();
        xlrec.ThisTimeLineID = ThisTimeLineID;
@@ -8098,7 +8098,7 @@ CreateEndOfRecoveryRecord(void)
         * changes to this point.
         */
        LWLockAcquire(ControlFileLock, LW_EXCLUSIVE);
-       ControlFile->time = (pg_time_t) xlrec.end_time;
+       ControlFile->time = (pg_time_t) time(NULL);
        ControlFile->minRecoveryPoint = recptr;
        ControlFile->minRecoveryPointTLI = ThisTimeLineID;
        UpdateControlFile();