mirror of
https://github.com/postgres/postgres.git
synced 2025-07-07 00:36:50 +03:00
pg_ctl: Detect current standby state from pg_control
pg_ctl used to determine whether a server was in standby mode by looking for a recovery.conf file. With this change, it instead looks into pg_control, which is potentially more accurate. There are also occasional discussions about removing recovery.conf, so this removes one dependency. Reviewed-by: Michael Paquier <michael.paquier@gmail.com>
This commit is contained in:
@ -52,6 +52,9 @@ pg_control_system(PG_FUNCTION_ARGS)
|
||||
|
||||
/* read the control file */
|
||||
ControlFile = get_controlfile(DataDir, NULL);
|
||||
if (!ControlFile)
|
||||
ereport(ERROR,
|
||||
(errmsg("calculated CRC checksum does not match value stored in file")));
|
||||
|
||||
values[0] = Int32GetDatum(ControlFile->pg_control_version);
|
||||
nulls[0] = false;
|
||||
@ -128,6 +131,9 @@ pg_control_checkpoint(PG_FUNCTION_ARGS)
|
||||
|
||||
/* Read the control file. */
|
||||
ControlFile = get_controlfile(DataDir, NULL);
|
||||
if (!ControlFile)
|
||||
ereport(ERROR,
|
||||
(errmsg("calculated CRC checksum does not match value stored in file")));
|
||||
|
||||
/*
|
||||
* Calculate name of the WAL file containing the latest checkpoint's REDO
|
||||
@ -230,6 +236,9 @@ pg_control_recovery(PG_FUNCTION_ARGS)
|
||||
|
||||
/* read the control file */
|
||||
ControlFile = get_controlfile(DataDir, NULL);
|
||||
if (!ControlFile)
|
||||
ereport(ERROR,
|
||||
(errmsg("calculated CRC checksum does not match value stored in file")));
|
||||
|
||||
values[0] = LSNGetDatum(ControlFile->minRecoveryPoint);
|
||||
nulls[0] = false;
|
||||
@ -295,6 +304,9 @@ pg_control_init(PG_FUNCTION_ARGS)
|
||||
|
||||
/* read the control file */
|
||||
ControlFile = get_controlfile(DataDir, NULL);
|
||||
if (!ControlFile)
|
||||
ereport(ERROR,
|
||||
(errmsg("calculated CRC checksum does not match value stored in file")));
|
||||
|
||||
values[0] = Int32GetDatum(ControlFile->maxAlign);
|
||||
nulls[0] = false;
|
||||
|
Reference in New Issue
Block a user