From: Tomas Vondra Date: Wed, 30 Aug 2017 21:55:30 +0000 (+0200) Subject: Disable logical decoding as unsupported X-Git-Tag: XL_10_R1BETA1~139 X-Git-Url: http://git.postgresql.org/gitweb/static/gitweb.js?a=commitdiff_plain;h=e71c1dd42ae9c47023f3f9aee60d6663fb1474c1;p=postgres-xl.git Disable logical decoding as unsupported Commit 665c224a6b2afa disabled CREATE PUBLICATION/SUBSCRIPTION, but it was still possible to create a logical replication slot and call pg_logical_slot_get_changes() on it. That would however crash and burn as ReorderBufferCommit() relies on subtransactions, and BeginInternalSubTransaction() is not expected to fail, leading to segfaults in the PG_CATCH block. Simply disallowing creating logical slots (and whatever else relies on CheckLogicalDecodingRequirements) seems like the best fix. --- diff --git a/src/backend/replication/logical/logical.c b/src/backend/replication/logical/logical.c index efb9785f25..f6774df96f 100644 --- a/src/backend/replication/logical/logical.c +++ b/src/backend/replication/logical/logical.c @@ -77,6 +77,16 @@ CheckLogicalDecodingRequirements(void) { CheckSlotRequirements(); + /* + * Postgres-XL does not support logical replication for now. We could create + * the logical replication slot, but attempts to decode the WAL would crash + * and burn as ReorderBufferCommit() uses subtransactions internally. We need + */ + ereport(ERROR, + (errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("Postgres-XL does not support logical replication"), + errdetail("The feature is not currently supported"))); + if (wal_level < WAL_LEVEL_LOGICAL) ereport(ERROR, (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),