pgsql: Fix negative bitmapset member not allowed error in logical repli

From: Peter Eisentraut <peter(at)eisentraut(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix negative bitmapset member not allowed error in logical repli
Date: 2019-11-09 08:17:03
Message-ID: E1iTLvb-0008IB-ON@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix negative bitmapset member not allowed error in logical replication

This happens when we add a replica identity column on a subscriber
that does not yet exist on the publisher, according to the mapping
maintained by the subscriber. Code that checks whether the target
relation on the subscriber is updatable would check the replica
identity attribute bitmap with a column number -1, which would result
in an error. To fix, skip such columns in the bitmap lookup and
consider the relation not updatable. The result is consistent with
the rule that the replica identity columns on the subscriber must be a
subset of those on the publisher, since if the column doesn't exist on
the publisher, the column set on the subscriber can't be a subset.

Reported-by: Tim Clarke <tim(dot)clarke(at)minerva(dot)info>
Analyzed-by: Jehan-Guillaume de Rorthais <jgdr(at)dalibo(dot)com>
Discussion: https://www.postgresql.org/message-id/flat/a9139c29-7ddd-973b-aa7f-71fed9c38d75%40minerva.info

Branch
------
REL_12_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/d891d2c897859e86a7728afd151e8c07f2511168

Modified Files
--------------
src/backend/replication/logical/relation.c | 3 ++-
src/test/subscription/t/008_diff_schema.pl | 37 ++++++++++++++++++++++++++++--
2 files changed, 37 insertions(+), 3 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Peter Eisentraut 2019-11-09 08:37:55 pgsql: doc: Further tweak recovery parameters documentation
Previous Message Peter Eisentraut 2019-11-09 08:01:56 Re: pgsql: Fix gratuitous error message variation