aboutsummaryrefslogtreecommitdiff
path: root/src/backend/replication/logical/logical.c
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2018-10-31 14:47:41 -0700
committerAndres Freund <andres@anarazel.de>2018-10-31 15:46:39 -0700
commit691d79a0793328a45b01348675ba677aa7623bec (patch)
treecc41b65107978af4b006f3c5930a00071a5ae62c /src/backend/replication/logical/logical.c
parent696b0c5fd0a8765fe6dfd075a30be06b448fd615 (diff)
downloadpostgresql-691d79a0793328a45b01348675ba677aa7623bec.tar.gz
postgresql-691d79a0793328a45b01348675ba677aa7623bec.zip
Disallow starting server with insufficient wal_level for existing slot.
Previously it was possible to create a slot, change wal_level, and restart, even if the new wal_level was insufficient for the slot. That's a problem for both logical and physical slots, because the necessary WAL records are not generated. This removes a few tests in newer versions that, somewhat inexplicably, whether restarting with a too low wal_level worked (a buggy behaviour!). Reported-By: Joshua D. Drake Author: Andres Freund Discussion: https://postgr.es/m/20181029191304.lbsmhshkyymhw22w@alap3.anarazel.de Backpatch: 9.4-, where replication slots where introduced
Diffstat (limited to 'src/backend/replication/logical/logical.c')
-rw-r--r--src/backend/replication/logical/logical.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/backend/replication/logical/logical.c b/src/backend/replication/logical/logical.c
index bb83fc9d42d..9f99e4f0499 100644
--- a/src/backend/replication/logical/logical.c
+++ b/src/backend/replication/logical/logical.c
@@ -79,6 +79,11 @@ CheckLogicalDecodingRequirements(void)
{
CheckSlotRequirements();
+ /*
+ * NB: Adding a new requirement likely means that RestoreSlotFromDisk()
+ * needs the same check.
+ */
+
if (wal_level < WAL_LEVEL_LOGICAL)
ereport(ERROR,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),