mirror of
https://github.com/postgres/postgres.git
synced 2025-05-17 06:41:24 +03:00
Fix timestamp in end-of-recovery WAL records.
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.
This commit is contained in:
parent
0e68570e8b
commit
f8c51fe6bb
@ -7270,7 +7270,7 @@ CreateEndOfRecoveryRecord(void)
|
|||||||
if (!RecoveryInProgress())
|
if (!RecoveryInProgress())
|
||||||
elog(ERROR, "can only be used to end recovery");
|
elog(ERROR, "can only be used to end recovery");
|
||||||
|
|
||||||
xlrec.end_time = time(NULL);
|
xlrec.end_time = GetCurrentTimestamp();
|
||||||
|
|
||||||
LWLockAcquire(WALInsertLock, LW_SHARED);
|
LWLockAcquire(WALInsertLock, LW_SHARED);
|
||||||
xlrec.ThisTimeLineID = ThisTimeLineID;
|
xlrec.ThisTimeLineID = ThisTimeLineID;
|
||||||
@ -7295,7 +7295,7 @@ CreateEndOfRecoveryRecord(void)
|
|||||||
* changes to this point.
|
* changes to this point.
|
||||||
*/
|
*/
|
||||||
LWLockAcquire(ControlFileLock, LW_EXCLUSIVE);
|
LWLockAcquire(ControlFileLock, LW_EXCLUSIVE);
|
||||||
ControlFile->time = (pg_time_t) xlrec.end_time;
|
ControlFile->time = (pg_time_t) time(NULL);
|
||||||
ControlFile->minRecoveryPoint = recptr;
|
ControlFile->minRecoveryPoint = recptr;
|
||||||
ControlFile->minRecoveryPointTLI = ThisTimeLineID;
|
ControlFile->minRecoveryPointTLI = ThisTimeLineID;
|
||||||
UpdateControlFile();
|
UpdateControlFile();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user