aboutsummaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
authorPeter Eisentraut <peter@eisentraut.org>2019-03-15 10:16:26 +0100
committerPeter Eisentraut <peter@eisentraut.org>2019-03-15 10:16:26 +0100
commit69039fda837d7a9c78e42b9dd5291d454e71f460 (patch)
tree6a10d19de8831d5f14c84eda396d65ebaf712845 /src/backend
parent4e197bf19556a1699b0e11e1ff111d77d09f6f80 (diff)
downloadpostgresql-69039fda837d7a9c78e42b9dd5291d454e71f460.tar.gz
postgresql-69039fda837d7a9c78e42b9dd5291d454e71f460.zip
Add walreceiver API to get remote server version
Add a separate walreceiver API function walrcv_server_version() to get the version of the remote server, instead of doing it as part of walrcv_identify_system(). This allows the server version to be available even for uses that don't call IDENTIFY_SYSTEM, and it seems cleaner anyway. This is for an upcoming patch, not currently used. Reviewed-by: Michael Paquier <michael@paquier.xyz> Discussion: https://www.postgresql.org/message-id/20190115071359.GF1433@paquier.xyz
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/replication/libpqwalreceiver/libpqwalreceiver.c19
-rw-r--r--src/backend/replication/logical/worker.c4
-rw-r--r--src/backend/replication/walreceiver.c4
3 files changed, 15 insertions, 12 deletions
diff --git a/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c b/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
index 7027737e67c..7123d4169d9 100644
--- a/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
+++ b/src/backend/replication/libpqwalreceiver/libpqwalreceiver.c
@@ -56,8 +56,8 @@ static char *libpqrcv_get_conninfo(WalReceiverConn *conn);
static void libpqrcv_get_senderinfo(WalReceiverConn *conn,
char **sender_host, int *sender_port);
static char *libpqrcv_identify_system(WalReceiverConn *conn,
- TimeLineID *primary_tli,
- int *server_version);
+ TimeLineID *primary_tli);
+static int libpqrcv_server_version(WalReceiverConn *conn);
static void libpqrcv_readtimelinehistoryfile(WalReceiverConn *conn,
TimeLineID tli, char **filename,
char **content, int *len);
@@ -86,6 +86,7 @@ static WalReceiverFunctionsType PQWalReceiverFunctions = {
libpqrcv_get_conninfo,
libpqrcv_get_senderinfo,
libpqrcv_identify_system,
+ libpqrcv_server_version,
libpqrcv_readtimelinehistoryfile,
libpqrcv_startstreaming,
libpqrcv_endstreaming,
@@ -309,8 +310,7 @@ libpqrcv_get_senderinfo(WalReceiverConn *conn, char **sender_host,
* timeline ID of the primary.
*/
static char *
-libpqrcv_identify_system(WalReceiverConn *conn, TimeLineID *primary_tli,
- int *server_version)
+libpqrcv_identify_system(WalReceiverConn *conn, TimeLineID *primary_tli)
{
PGresult *res;
char *primary_sysid;
@@ -343,12 +343,19 @@ libpqrcv_identify_system(WalReceiverConn *conn, TimeLineID *primary_tli,
*primary_tli = pg_strtoint32(PQgetvalue(res, 0, 1));
PQclear(res);
- *server_version = PQserverVersion(conn->streamConn);
-
return primary_sysid;
}
/*
+ * Thin wrapper around libpq to obtain server version.
+ */
+static int
+libpqrcv_server_version(WalReceiverConn *conn)
+{
+ return PQserverVersion(conn->streamConn);
+}
+
+/*
* Start streaming WAL data from given streaming options.
*
* Returns true if we switched successfully to copy-both mode. False
diff --git a/src/backend/replication/logical/worker.c b/src/backend/replication/logical/worker.c
index 07f4ec90553..52a5090b694 100644
--- a/src/backend/replication/logical/worker.c
+++ b/src/backend/replication/logical/worker.c
@@ -1674,7 +1674,6 @@ ApplyWorkerMain(Datum main_arg)
RepOriginId originid;
TimeLineID startpointTLI;
char *err;
- int server_version;
myslotname = MySubscription->slotname;
@@ -1708,8 +1707,7 @@ ApplyWorkerMain(Datum main_arg)
* We don't really use the output identify_system for anything but it
* does some initializations on the upstream so let's still call it.
*/
- (void) walrcv_identify_system(wrconn, &startpointTLI,
- &server_version);
+ (void) walrcv_identify_system(wrconn, &startpointTLI);
}
diff --git a/src/backend/replication/walreceiver.c b/src/backend/replication/walreceiver.c
index 9eaaa8ff505..d9959e568a8 100644
--- a/src/backend/replication/walreceiver.c
+++ b/src/backend/replication/walreceiver.c
@@ -330,7 +330,6 @@ WalReceiverMain(void)
{
char *primary_sysid;
char standby_sysid[32];
- int server_version;
WalRcvStreamOptions options;
/*
@@ -338,8 +337,7 @@ WalReceiverMain(void)
* IDENTIFY_SYSTEM replication command.
*/
EnableWalRcvImmediateExit();
- primary_sysid = walrcv_identify_system(wrconn, &primaryTLI,
- &server_version);
+ primary_sysid = walrcv_identify_system(wrconn, &primaryTLI);
snprintf(standby_sysid, sizeof(standby_sysid), UINT64_FORMAT,
GetSystemIdentifier());