aboutsummaryrefslogtreecommitdiff
path: root/src/bin/pg_basebackup/streamutil.c
diff options
context:
space:
mode:
authorMasahiko Sawada <msawada@postgresql.org>2025-04-04 10:39:57 -0700
committerMasahiko Sawada <msawada@postgresql.org>2025-04-04 10:39:57 -0700
commitcf2655a9029aff63dd567dbbdcdee15ec969905d (patch)
treef44b8d2018d11e917f59a04f6d122455de9ada95 /src/bin/pg_basebackup/streamutil.c
parent3556c89321e8baa2242288bd4f015efd1e9d6be0 (diff)
downloadpostgresql-cf2655a9029aff63dd567dbbdcdee15ec969905d.tar.gz
postgresql-cf2655a9029aff63dd567dbbdcdee15ec969905d.zip
pg_recvlogical: Add --failover option.
This new option instructs pg_recvlogical to create the logical replication slot with the failover option enabled. It can be used in conjunction with the --create-slot option. Author: Hayato Kuroda <kuroda.hayato@fujitsu.com> Reviewed-by: Michael Banck <mbanck@gmx.net> Reviewed-by: Masahiko Sawada <sawada.mshk@gmail.com> Discussion: https://postgr.es/m/OSCPR01MB14966C54097FC83AF19F3516BF5AC2@OSCPR01MB14966.jpnprd01.prod.outlook.com
Diffstat (limited to 'src/bin/pg_basebackup/streamutil.c')
-rw-r--r--src/bin/pg_basebackup/streamutil.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/bin/pg_basebackup/streamutil.c b/src/bin/pg_basebackup/streamutil.c
index 8e605f43ffe..c7b8a4c3a4b 100644
--- a/src/bin/pg_basebackup/streamutil.c
+++ b/src/bin/pg_basebackup/streamutil.c
@@ -583,7 +583,7 @@ GetSlotInformation(PGconn *conn, const char *slot_name,
bool
CreateReplicationSlot(PGconn *conn, const char *slot_name, const char *plugin,
bool is_temporary, bool is_physical, bool reserve_wal,
- bool slot_exists_ok, bool two_phase)
+ bool slot_exists_ok, bool two_phase, bool failover)
{
PQExpBuffer query;
PGresult *res;
@@ -594,6 +594,7 @@ CreateReplicationSlot(PGconn *conn, const char *slot_name, const char *plugin,
Assert((is_physical && plugin == NULL) ||
(!is_physical && plugin != NULL));
Assert(!(two_phase && is_physical));
+ Assert(!(failover && is_physical));
Assert(slot_name != NULL);
/* Build base portion of query */
@@ -616,6 +617,10 @@ CreateReplicationSlot(PGconn *conn, const char *slot_name, const char *plugin,
}
else
{
+ if (failover && PQserverVersion(conn) >= 170000)
+ AppendPlainCommandOption(query, use_new_option_syntax,
+ "FAILOVER");
+
if (two_phase && PQserverVersion(conn) >= 150000)
AppendPlainCommandOption(query, use_new_option_syntax,
"TWO_PHASE");