Hi,
I see there's no single function one can rely on to get various
timeline IDs [1] the postgres server deals with. We have the following
functions that emit controlfile's timelines
pg_control_checkpoint() - returns
ControlFile->checkPointCopy.ThisTimeLineID and
ControlFile->checkPointCopy.PrevTimeLineID
pg_control_recovery() - returns ControlFile->minRecoveryPointTLI
Most of the times XLogCtl->{InsertTimeLineID, PrevTimeLineID} and
ControlFile->checkPointCopy.{ThisTimeLineID, PrevTimeLineID} may be
the same (?).
No functions emit XLogRecoveryCtl->{lastReplayedTLI, replayEndTLI} and
WalRcv->{receiveStartTLI, receivedTLI}.
We may think of letting pg_current_wal_XXX, pg_last_wal_replay_lsn and
pg_last_wal_receive_lsn to return XLogCtl->{InsertTimeLineID,
PrevTimeLineID}, XLogRecoveryCtl->{lastReplayedTLI, replayEndTLI} and
WalRcv->{receiveStartTLI, receivedTLI} respectively, but the names of
those functions need a change which I don't think is a great idea
given the fact that many client apps, control planes would have used
them.
We have two options:
1) Having a new set of functions, something like pg_current_wal_tli,
pg_last_wal_replay_tli and pg_last_wal_receive_tli.
2) A single function, something like pg_get_server_tlis or
pg_get_wal_timelines or some other.
I prefer option (1).
Thoughts?
[1]
XLogCtl->InsertTimeLineID
XLogCtl->PrevTimeLineID
XLogRecoveryCtl->lastReplayedTLI
XLogRecoveryCtl->replayEndTLI
WalRcv->receiveStartTLI
WalRcv->receivedTLI
ControlFile->checkPointCopy.ThisTimeLineID
ControlFile->checkPointCopy.PrevTimeLineID
ControlFile->minRecoveryPointTLI
Regards,
Bharath Rupireddy.