Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit69039fd

Browse files
committed
Add walreceiver API to get remote server version
Add a separate walreceiver API function walrcv_server_version() to getthe version of the remote server, instead of doing it as part ofwalrcv_identify_system(). This allows the server version to beavailable even for uses that don't call IDENTIFY_SYSTEM, and it seemscleaner 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
1 parent4e197bf commit69039fd

File tree

4 files changed

+22
-16
lines changed

4 files changed

+22
-16
lines changed

‎src/backend/replication/libpqwalreceiver/libpqwalreceiver.c

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ static char *libpqrcv_get_conninfo(WalReceiverConn *conn);
5656
staticvoidlibpqrcv_get_senderinfo(WalReceiverConn*conn,
5757
char**sender_host,int*sender_port);
5858
staticchar*libpqrcv_identify_system(WalReceiverConn*conn,
59-
TimeLineID*primary_tli,
60-
int*server_version);
59+
TimeLineID*primary_tli);
60+
staticintlibpqrcv_server_version(WalReceiverConn*conn);
6161
staticvoidlibpqrcv_readtimelinehistoryfile(WalReceiverConn*conn,
6262
TimeLineIDtli,char**filename,
6363
char**content,int*len);
@@ -86,6 +86,7 @@ static WalReceiverFunctionsType PQWalReceiverFunctions = {
8686
libpqrcv_get_conninfo,
8787
libpqrcv_get_senderinfo,
8888
libpqrcv_identify_system,
89+
libpqrcv_server_version,
8990
libpqrcv_readtimelinehistoryfile,
9091
libpqrcv_startstreaming,
9192
libpqrcv_endstreaming,
@@ -309,8 +310,7 @@ libpqrcv_get_senderinfo(WalReceiverConn *conn, char **sender_host,
309310
* timeline ID of the primary.
310311
*/
311312
staticchar*
312-
libpqrcv_identify_system(WalReceiverConn*conn,TimeLineID*primary_tli,
313-
int*server_version)
313+
libpqrcv_identify_system(WalReceiverConn*conn,TimeLineID*primary_tli)
314314
{
315315
PGresult*res;
316316
char*primary_sysid;
@@ -343,11 +343,18 @@ libpqrcv_identify_system(WalReceiverConn *conn, TimeLineID *primary_tli,
343343
*primary_tli=pg_strtoint32(PQgetvalue(res,0,1));
344344
PQclear(res);
345345

346-
*server_version=PQserverVersion(conn->streamConn);
347-
348346
returnprimary_sysid;
349347
}
350348

349+
/*
350+
* Thin wrapper around libpq to obtain server version.
351+
*/
352+
staticint
353+
libpqrcv_server_version(WalReceiverConn*conn)
354+
{
355+
returnPQserverVersion(conn->streamConn);
356+
}
357+
351358
/*
352359
* Start streaming WAL data from given streaming options.
353360
*

‎src/backend/replication/logical/worker.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1674,7 +1674,6 @@ ApplyWorkerMain(Datum main_arg)
16741674
RepOriginIdoriginid;
16751675
TimeLineIDstartpointTLI;
16761676
char*err;
1677-
intserver_version;
16781677

16791678
myslotname=MySubscription->slotname;
16801679

@@ -1708,8 +1707,7 @@ ApplyWorkerMain(Datum main_arg)
17081707
* We don't really use the output identify_system for anything but it
17091708
* does some initializations on the upstream so let's still call it.
17101709
*/
1711-
(void)walrcv_identify_system(wrconn,&startpointTLI,
1712-
&server_version);
1710+
(void)walrcv_identify_system(wrconn,&startpointTLI);
17131711

17141712
}
17151713

‎src/backend/replication/walreceiver.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -330,16 +330,14 @@ WalReceiverMain(void)
330330
{
331331
char*primary_sysid;
332332
charstandby_sysid[32];
333-
intserver_version;
334333
WalRcvStreamOptionsoptions;
335334

336335
/*
337336
* Check that we're connected to a valid server using the
338337
* IDENTIFY_SYSTEM replication command.
339338
*/
340339
EnableWalRcvImmediateExit();
341-
primary_sysid=walrcv_identify_system(wrconn,&primaryTLI,
342-
&server_version);
340+
primary_sysid=walrcv_identify_system(wrconn,&primaryTLI);
343341

344342
snprintf(standby_sysid,sizeof(standby_sysid),UINT64_FORMAT,
345343
GetSystemIdentifier());

‎src/include/replication/walreceiver.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,8 @@ typedef void (*walrcv_get_senderinfo_fn) (WalReceiverConn *conn,
209209
char**sender_host,
210210
int*sender_port);
211211
typedefchar*(*walrcv_identify_system_fn) (WalReceiverConn*conn,
212-
TimeLineID*primary_tli,
213-
int*server_version);
212+
TimeLineID*primary_tli);
213+
typedefint(*walrcv_server_version_fn) (WalReceiverConn*conn);
214214
typedefvoid (*walrcv_readtimelinehistoryfile_fn) (WalReceiverConn*conn,
215215
TimeLineIDtli,
216216
char**filename,
@@ -240,6 +240,7 @@ typedef struct WalReceiverFunctionsType
240240
walrcv_get_conninfo_fnwalrcv_get_conninfo;
241241
walrcv_get_senderinfo_fnwalrcv_get_senderinfo;
242242
walrcv_identify_system_fnwalrcv_identify_system;
243+
walrcv_server_version_fnwalrcv_server_version;
243244
walrcv_readtimelinehistoryfile_fnwalrcv_readtimelinehistoryfile;
244245
walrcv_startstreaming_fnwalrcv_startstreaming;
245246
walrcv_endstreaming_fnwalrcv_endstreaming;
@@ -260,8 +261,10 @@ extern PGDLLIMPORT WalReceiverFunctionsType *WalReceiverFunctions;
260261
WalReceiverFunctions->walrcv_get_conninfo(conn)
261262
#definewalrcv_get_senderinfo(conn,sender_host,sender_port) \
262263
WalReceiverFunctions->walrcv_get_senderinfo(conn, sender_host, sender_port)
263-
#definewalrcv_identify_system(conn,primary_tli,server_version) \
264-
WalReceiverFunctions->walrcv_identify_system(conn, primary_tli, server_version)
264+
#definewalrcv_identify_system(conn,primary_tli) \
265+
WalReceiverFunctions->walrcv_identify_system(conn, primary_tli)
266+
#definewalrcv_server_version(conn) \
267+
WalReceiverFunctions->walrcv_server_version(conn)
265268
#definewalrcv_readtimelinehistoryfile(conn,tli,filename,content,size) \
266269
WalReceiverFunctions->walrcv_readtimelinehistoryfile(conn, tli, filename, content, size)
267270
#definewalrcv_startstreaming(conn,options) \

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp