diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2017-01-19 12:00:00 -0500 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2017-01-20 09:04:49 -0500 |
commit | 665d1fad99e7b11678b0d5fa24d2898424243cd6 (patch) | |
tree | eefe3eb528f840780aef6c09939a1844dbabb30a /src/backend/replication/walreceiver.c | |
parent | ba61a04bc7fefeee03416d9911eb825c4897c223 (diff) | |
download | postgresql-665d1fad99e7b11678b0d5fa24d2898424243cd6.tar.gz postgresql-665d1fad99e7b11678b0d5fa24d2898424243cd6.zip |
Logical replication
- Add PUBLICATION catalogs and DDL
- Add SUBSCRIPTION catalog and DDL
- Define logical replication protocol and output plugin
- Add logical replication workers
From: Petr Jelinek <petr@2ndquadrant.com>
Reviewed-by: Steve Singer <steve@ssinger.info>
Reviewed-by: Andres Freund <andres@anarazel.de>
Reviewed-by: Erik Rijkers <er@xs4all.nl>
Reviewed-by: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Diffstat (limited to 'src/backend/replication/walreceiver.c')
-rw-r--r-- | src/backend/replication/walreceiver.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/backend/replication/walreceiver.c b/src/backend/replication/walreceiver.c index c6b54ec36af..0e4a4b9d19d 100644 --- a/src/backend/replication/walreceiver.c +++ b/src/backend/replication/walreceiver.c @@ -196,6 +196,7 @@ WalReceiverMain(void) WalRcvData *walrcv = WalRcv; TimestampTz last_recv_timestamp; bool ping_sent; + char *err; /* * WalRcv should be set up already (if we are a backend, we inherit this @@ -293,7 +294,10 @@ WalReceiverMain(void) /* Establish the connection to the primary for XLOG streaming */ EnableWalRcvImmediateExit(); - wrconn = walrcv_connect(conninfo, false, "walreceiver"); + wrconn = walrcv_connect(conninfo, false, "walreceiver", &err); + if (!wrconn) + ereport(ERROR, + (errmsg("could not connect to the primary server: %s", err))); DisableWalRcvImmediateExit(); /* @@ -316,13 +320,16 @@ WalReceiverMain(void) { char *primary_sysid; char standby_sysid[32]; + int server_version; + WalRcvStreamOptions options; /* * Check that we're connected to a valid server using the - * IDENTIFY_SYSTEM replication command, + * IDENTIFY_SYSTEM replication command. */ EnableWalRcvImmediateExit(); - primary_sysid = walrcv_identify_system(wrconn, &primaryTLI); + primary_sysid = walrcv_identify_system(wrconn, &primaryTLI, + &server_version); snprintf(standby_sysid, sizeof(standby_sysid), UINT64_FORMAT, GetSystemIdentifier()); @@ -368,9 +375,12 @@ WalReceiverMain(void) * history file, bump recovery target timeline, and ask us to restart * on the new timeline. */ + options.logical = false; + options.startpoint = startpoint; + options.slotname = slotname[0] != '\0' ? slotname : NULL; + options.proto.physical.startpointTLI = startpointTLI; ThisTimeLineID = startpointTLI; - if (walrcv_startstreaming(wrconn, startpointTLI, startpoint, - slotname[0] != '\0' ? slotname : NULL)) + if (walrcv_startstreaming(wrconn, &options)) { if (first_stream) ereport(LOG, |