Thread: New function(s) to get various timelines that the postgres server deals with.

New function(s) to get various timelines that the postgres server deals with.

From
Bharath Rupireddy
Date:
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.