Skip to content
Snippets Groups Projects
Commit 2af568c6 authored by Heikki Linnakangas's avatar Heikki Linnakangas
Browse files

Report WAL flush, not insert, position in replication IDENTIFY_SYSTEM

When beginning streaming replication, the client usually issues the
IDENTIFY_SYSTEM command, which used to return the current WAL insert
position. That's not suitable for the intended purpose of that field,
however. pg_receivexlog uses it to start replication from the reported
point, but if it hasn't been flushed to disk yet, it will fail. Change
IDENTIFY_SYSTEM to report the flush position instead.

Backpatch to 9.1 and above. 9.0 doesn't report any WAL position.
parent eae798ae
No related branches found
Tags
No related merge requests found
......@@ -1338,7 +1338,7 @@ The commands accepted in walsender mode are:
</term>
<listitem>
<para>
Current xlog write location. Useful to get a known location in the
Current xlog flush location. Useful to get a known location in the
transaction log where streaming can start.
</para>
</listitem>
......
......@@ -298,7 +298,7 @@ IdentifySystem(void)
GetSystemIdentifier());
snprintf(tli, sizeof(tli), "%u", ThisTimeLineID);
logptr = am_cascading_walsender ? GetStandbyFlushRecPtr(NULL) : GetInsertRecPtr();
logptr = am_cascading_walsender ? GetStandbyFlushRecPtr(NULL) : GetFlushRecPtr();
snprintf(xpos, sizeof(xpos), "%X/%X",
logptr.xlogid, logptr.xrecoff);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment