From 6fb7c5d67cdd55454fe6317f939a191f85e96473 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Mon, 29 Nov 2021 13:36:13 +0900 Subject: Centralize timestamp computation of control file on updates This commit moves the timestamp computation of the control file within the routine of src/common/ in charge of updating the backend's control file, which is shared by multiple frontend tools (pg_rewind, pg_checksums and pg_resetwal) and the backend itself. This change has as direct effect to update the control file's timestamp when writing the control file in pg_rewind and pg_checksums, something that is helpful to keep track of control file updates for those operations, something also tracked by the backend at startup within its logs. This part is arguably a bug, as ControlFileData->time should be updated each time a new version of the control file is written, but this is a behavior change so no backpatch is done. Author: Amul Sul Reviewed-by: Nathan Bossart, Michael Paquier, Bharath Rupireddy Discussion: https://postgr.es/m/CAAJ_b97nd_ghRpyFV9Djf9RLXkoTbOUqnocq11WGq9TisX09Fw@mail.gmail.com --- src/common/controldata_utils.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/common') diff --git a/src/common/controldata_utils.c b/src/common/controldata_utils.c index 7d4af7881ea..4ce097c05ce 100644 --- a/src/common/controldata_utils.c +++ b/src/common/controldata_utils.c @@ -23,6 +23,7 @@ #include #include #include +#include #include "access/xlog_internal.h" #include "catalog/pg_control.h" @@ -168,6 +169,9 @@ update_controlfile(const char *DataDir, StaticAssertStmt(sizeof(ControlFileData) <= PG_CONTROL_FILE_SIZE, "sizeof(ControlFileData) exceeds PG_CONTROL_FILE_SIZE"); + /* Update timestamp */ + ControlFile->time = (pg_time_t) time(NULL); + /* Recalculate CRC of control file */ INIT_CRC32C(ControlFile->crc); COMP_CRC32C(ControlFile->crc, -- cgit v1.2.3