mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
I added a result set to START_STREAMING command, but neglected walreceiver.
The patch to allow pg_receivexlog to switch timeline added a result set after copy has ended in START_STREAMING command, to return the next timeline's ID to the client. But walreceived didn't get the memo, and threw an error on the unexpected result set. Fix.
This commit is contained in:
parent
279628a0a7
commit
3684a534ef
@ -215,17 +215,27 @@ libpqrcv_endstreaming(void)
|
||||
|
||||
while ((res = PQgetResult(streamConn)) != NULL)
|
||||
{
|
||||
if (PQresultStatus(res) != PGRES_COMMAND_OK)
|
||||
ereport(ERROR,
|
||||
(errmsg("error reading result of streaming command: %s",
|
||||
PQerrorMessage(streamConn))));
|
||||
/*
|
||||
* After Copy, if the streaming ended because we reached end of the
|
||||
* timeline, server sends one result set with the next timeline's ID.
|
||||
* We don't need it, so just slurp and ignore it.
|
||||
*
|
||||
* If we had not yet received CopyDone from the backend, PGRES_COPY_IN
|
||||
* is also possible. However, at the moment this function is only
|
||||
* called after receiving CopyDone from the backend - the walreceiver
|
||||
* never terminates replication on its own initiative.
|
||||
*/
|
||||
switch (PQresultStatus(res))
|
||||
{
|
||||
case PGRES_COMMAND_OK:
|
||||
case PGRES_TUPLES_OK:
|
||||
break;
|
||||
|
||||
default:
|
||||
ereport(ERROR,
|
||||
(errmsg("error reading result of streaming command: %s",
|
||||
PQerrorMessage(streamConn))));
|
||||
}
|
||||
PQclear(res);
|
||||
}
|
||||
}
|
||||
|
@ -431,7 +431,9 @@ WalReceiverMain(void)
|
||||
{
|
||||
ereport(LOG,
|
||||
(errmsg("replication terminated by primary server"),
|
||||
errdetail("End of WAL reached on timeline %u", startpointTLI)));
|
||||
errdetail("End of WAL reached on timeline %u at %X/%X",
|
||||
startpointTLI,
|
||||
(uint32) (LogstreamResult.Write >> 32), (uint32) LogstreamResult.Write)));
|
||||
endofwal = true;
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user