From: | Amit Kapila <akapila(at)postgresql(dot)org> |
---|---|
To: | pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | pgsql: Prohibit combining publications with different column lists. |
Date: | 2022-06-02 03:13:11 |
Message-ID: | E1nwbGp-002I3O-03@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
Prohibit combining publications with different column lists.
Currently, we simply combine the column lists when publishing tables on
multiple publications and that can sometimes lead to unexpected behavior.
Say, if a column is published in any row-filtered publication, then the
values for that column are sent to the subscriber even for rows that don't
match the row filter, as long as the row matches the row filter for any
other publication, even if that other publication doesn't include the
column.
The main purpose of introducing a column list is to have statically
different shapes on publisher and subscriber or hide sensitive column
data. In both cases, it doesn't seem to make sense to combine column
lists.
So, we disallow the cases where the column list is different for the same
table when combining publications. It can be later extended to combine the
column lists for selective cases where required.
Reported-by: Alvaro Herrera
Author: Hou Zhijie
Reviewed-by: Amit Kapila
Discussion: https://postgr.es/m/202204251548.mudq7jbqnh7r@alvherre.pgsql
Branch
------
master
Details
-------
https://git.postgresql.org/pg/commitdiff/fd0b9dcebda7b931a41ce5c8e86d13f2efd0af2e
Modified Files
--------------
doc/src/sgml/ref/alter_publication.sgml | 12 ++-
doc/src/sgml/ref/create_subscription.sgml | 5 +
src/backend/commands/subscriptioncmds.c | 28 +++++-
src/backend/replication/logical/tablesync.c | 72 ++++++-------
src/backend/replication/pgoutput/pgoutput.c | 80 +++++++--------
src/test/subscription/t/031_column_list.pl | 150 ++++++++++++----------------
6 files changed, 181 insertions(+), 166 deletions(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Etsuro Fujita | 2022-06-02 09:07:43 | pgsql: Doc: Further fix CREATE FOREIGN TABLE synopsis. |
Previous Message | Michael Paquier | 2022-06-02 00:23:25 | pgsql: Add missing test names in TAP tests of pg_upgrade |