mirror of
https://github.com/postgres/postgres.git
synced 2025-08-22 21:53:06 +03:00
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>
This commit is contained in:
@@ -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");
|
||||
|
Reference in New Issue
Block a user