pgsql: Ignore dropped and generated columns from the column list.

From: Amit Kapila <akapila(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Ignore dropped and generated columns from the column list.
Date: 2023-01-13 09:41:29
Message-ID: E1pGGYz-003RFr-5k@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Ignore dropped and generated columns from the column list.

We don't allow different column lists for the same table in the different
publications of the single subscription. A publication with a column list
except for dropped and generated columns should be considered the same as
a publication with no column list (which implicitly includes all columns
as part of the columns list). However, as we were not excluding the
dropped and generated columns from the column list combining such
publications leads to an error "cannot use different column lists for
table ...".

We decided not to backpatch this fix as there is a risk of users seeing
this as a behavior change and also we didn't see any field report of this
case.

Author: Shi yu
Reviewed-by: Amit Kapila
Discussion: https://postgr.es/m/OSZPR01MB631091CCBC56F195B1B9ACB0FDFE9@OSZPR01MB6310.jpnprd01.prod.outlook.com

Branch
------
master

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

Modified Files
--------------
src/backend/catalog/pg_publication.c | 30 ++++++++++++++++++
src/backend/catalog/system_views.sql | 5 ++-
src/backend/replication/pgoutput/pgoutput.c | 17 ++++++++++-
src/include/catalog/catversion.h | 2 +-
src/test/regress/expected/rules.out | 2 +-
src/test/subscription/t/031_column_list.pl | 47 +++++++++++++++++++++++++++++
6 files changed, 97 insertions(+), 6 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Jeff Davis 2023-01-13 22:39:16 pgsql: Simplify permissions for LOCK TABLE.
Previous Message Amit Kapila 2023-01-13 03:13:45 pgsql: Avoid creating parallel apply state hash table unless required.