mirror of
https://github.com/postgres/postgres.git
synced 2025-06-16 06:01:02 +03:00
Send status updates back from standby server to master, indicating how far
the standby has written, flushed, and applied the WAL. At the moment, this is for informational purposes only, the values are only shown in pg_stat_replication system view, but in the future they will also be needed for synchronous replication. Extracted from Simon riggs' synchronous replication patch by Robert Haas, with some tweaking by me.
This commit is contained in:
@ -9317,6 +9317,25 @@ pg_last_xlog_receive_location(PG_FUNCTION_ARGS)
|
||||
PG_RETURN_TEXT_P(cstring_to_text(location));
|
||||
}
|
||||
|
||||
/*
|
||||
* Get latest redo apply position.
|
||||
*
|
||||
* Exported to allow WALReceiver to read the pointer directly.
|
||||
*/
|
||||
XLogRecPtr
|
||||
GetXLogReplayRecPtr(void)
|
||||
{
|
||||
/* use volatile pointer to prevent code rearrangement */
|
||||
volatile XLogCtlData *xlogctl = XLogCtl;
|
||||
XLogRecPtr recptr;
|
||||
|
||||
SpinLockAcquire(&xlogctl->info_lck);
|
||||
recptr = xlogctl->recoveryLastRecPtr;
|
||||
SpinLockRelease(&xlogctl->info_lck);
|
||||
|
||||
return recptr;
|
||||
}
|
||||
|
||||
/*
|
||||
* Report the last WAL replay location (same format as pg_start_backup etc)
|
||||
*
|
||||
@ -9326,14 +9345,10 @@ pg_last_xlog_receive_location(PG_FUNCTION_ARGS)
|
||||
Datum
|
||||
pg_last_xlog_replay_location(PG_FUNCTION_ARGS)
|
||||
{
|
||||
/* use volatile pointer to prevent code rearrangement */
|
||||
volatile XLogCtlData *xlogctl = XLogCtl;
|
||||
XLogRecPtr recptr;
|
||||
char location[MAXFNAMELEN];
|
||||
|
||||
SpinLockAcquire(&xlogctl->info_lck);
|
||||
recptr = xlogctl->recoveryLastRecPtr;
|
||||
SpinLockRelease(&xlogctl->info_lck);
|
||||
recptr = GetXLogReplayRecPtr();
|
||||
|
||||
if (recptr.xlogid == 0 && recptr.xrecoff == 0)
|
||||
PG_RETURN_NULL();
|
||||
|
Reference in New Issue
Block a user