diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2017-09-26 16:07:52 -0400 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2017-09-27 08:49:47 -0400 |
commit | 3709ca1cf069cee24ef8000cb6a479813b5537df (patch) | |
tree | d54dbade52078b66be199c1402ed4ef9540828ce /src/bin/pg_basebackup/streamutil.c | |
parent | 59597e6485847ae40eab2e80ff04af3e8663f2d8 (diff) | |
download | postgresql-3709ca1cf069cee24ef8000cb6a479813b5537df.tar.gz postgresql-3709ca1cf069cee24ef8000cb6a479813b5537df.zip |
pg_basebackup: Add option to create replication slot
When requesting a particular replication slot, the new pg_basebackup
option -C/--create-slot creates it before starting to replicate from it.
Further refactor the slot creation logic to include the temporary slot
creation logic into the same function. Add new arguments is_temporary
and preserve_wal to CreateReplicationSlot(). Print in --verbose mode
that a slot has been created.
Author: Michael Banck <michael.banck@credativ.de>
Diffstat (limited to 'src/bin/pg_basebackup/streamutil.c')
-rw-r--r-- | src/bin/pg_basebackup/streamutil.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/bin/pg_basebackup/streamutil.c b/src/bin/pg_basebackup/streamutil.c index df17f60596a..81fef8cd516 100644 --- a/src/bin/pg_basebackup/streamutil.c +++ b/src/bin/pg_basebackup/streamutil.c @@ -398,7 +398,8 @@ RunIdentifySystem(PGconn *conn, char **sysid, TimeLineID *starttli, */ bool CreateReplicationSlot(PGconn *conn, const char *slot_name, const char *plugin, - bool is_physical, bool slot_exists_ok) + bool is_temporary, bool is_physical, bool reserve_wal, + bool slot_exists_ok) { PQExpBuffer query; PGresult *res; @@ -410,13 +411,18 @@ CreateReplicationSlot(PGconn *conn, const char *slot_name, const char *plugin, Assert(slot_name != NULL); /* Build query */ + appendPQExpBuffer(query, "CREATE_REPLICATION_SLOT \"%s\"", slot_name); + if (is_temporary) + appendPQExpBuffer(query, " TEMPORARY"); if (is_physical) - appendPQExpBuffer(query, "CREATE_REPLICATION_SLOT \"%s\" PHYSICAL", - slot_name); + { + appendPQExpBuffer(query, " PHYSICAL"); + if (reserve_wal) + appendPQExpBuffer(query, " RESERVE_WAL"); + } else { - appendPQExpBuffer(query, "CREATE_REPLICATION_SLOT \"%s\" LOGICAL \"%s\"", - slot_name, plugin); + appendPQExpBuffer(query, " LOGICAL \"%s\"", plugin); if (PQserverVersion(conn) >= 100000) /* pg_recvlogical doesn't use an exported snapshot, so suppress */ appendPQExpBuffer(query, " NOEXPORT_SNAPSHOT"); |