aboutsummaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2023-11-21 13:55:01 +0900
committerMichael Paquier <michael@paquier.xyz>2023-11-21 13:55:01 +0900
commite83aa9f92fdd88c2912cc43a61fd9f59f4c8f4d3 (patch)
treed4a5b6c0dc112c20b6875a721bcc05bdc474b77c /src/backend
parent7c3fb505b14e86581b6a052075a294c78c91b123 (diff)
downloadpostgresql-e83aa9f92fdd88c2912cc43a61fd9f59f4c8f4d3.tar.gz
postgresql-e83aa9f92fdd88c2912cc43a61fd9f59f4c8f4d3.zip
Simplify some logic in CreateReplicationSlot()
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 1d04a59be31b, 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
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/replication/walsender.c32
1 files changed, 16 insertions, 16 deletions
diff --git a/src/backend/replication/walsender.c b/src/backend/replication/walsender.c
index e250b0567eb..3bc9c823895 100644
--- a/src/backend/replication/walsender.c
+++ b/src/backend/replication/walsender.c
@@ -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();
/*
@@ -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
@@ -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));