Skip to content

Commit

Permalink
Simplify some logic in CreateReplicationSlot()
Browse files Browse the repository at this point in the history
This refactoring reduces the code in charge of creating replication
slots from two "if" block to a single one, making it slightly cleaner.

This change is possible since 1d04a59, that has removed the
intermediate code that existed between the two "if" blocks in charge of
initializing the output message buffer.

Author: Peter Smith
Discussion: https://postgr.es/m/CAHut+PtnJzqKT41Zt8pChRzba=QgCqjtfYvcf84NMj3VFJoKfw@mail.gmail.com
  • Loading branch information
michaelpq committed Nov 21, 2023
1 parent 7c3fb50 commit e83aa9f
Showing 1 changed file with 16 additions and 16 deletions.
32 changes: 16 additions & 16 deletions src/backend/replication/walsender.c
Original file line number Diff line number Diff line change
Expand Up @@ -1061,9 +1061,25 @@ CreateReplicationSlot(CreateReplicationSlotCmd *cmd)
ReplicationSlotCreate(cmd->slotname, false,
cmd->temporary ? RS_TEMPORARY : RS_PERSISTENT,
false);

if (reserve_wal)
{
ReplicationSlotReserveWal();

ReplicationSlotMarkDirty();

/* Write this slot to disk if it's a permanent one. */
if (!cmd->temporary)
ReplicationSlotSave();
}
}
else
{
LogicalDecodingContext *ctx;
bool need_full_snapshot = false;

Assert(cmd->kind == REPLICATION_KIND_LOGICAL);

CheckLogicalDecodingRequirements();

/*
Expand All @@ -1076,12 +1092,6 @@ CreateReplicationSlot(CreateReplicationSlotCmd *cmd)
ReplicationSlotCreate(cmd->slotname, true,
cmd->temporary ? RS_TEMPORARY : RS_EPHEMERAL,
two_phase);
}

if (cmd->kind == REPLICATION_KIND_LOGICAL)
{
LogicalDecodingContext *ctx;
bool need_full_snapshot = false;

/*
* Do options check early so that we can bail before calling the
Expand Down Expand Up @@ -1175,16 +1185,6 @@ CreateReplicationSlot(CreateReplicationSlotCmd *cmd)
if (!cmd->temporary)
ReplicationSlotPersist();
}
else if (cmd->kind == REPLICATION_KIND_PHYSICAL && reserve_wal)
{
ReplicationSlotReserveWal();

ReplicationSlotMarkDirty();

/* Write this slot to disk if it's a permanent one. */
if (!cmd->temporary)
ReplicationSlotSave();
}

snprintf(xloc, sizeof(xloc), "%X/%X",
LSN_FORMAT_ARGS(MyReplicationSlot->data.confirmed_flush));
Expand Down

0 comments on commit e83aa9f

Please sign in to comment.