pgsql: Fix incorrect output from pgoutput when using column lists.

From: Amit Kapila <akapila(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix incorrect output from pgoutput when using column lists.
Date: 2022-12-02 05:45:14
Message-ID: E1p0yrJ-001f6k-3w@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix incorrect output from pgoutput when using column lists.

For Updates and Deletes, we were not honoring the columns list for old
tuple values while sending tuple data via pgoutput. This results in
pgoutput emitting more columns than expected.

This is not a problem for built-in logical replication as we simply ignore
additional columns based on the relation information sent previously which
didn't have those columns. However, some other users of pgoutput plugin
may expect the columns as per the column list. Also, sending extra columns
unnecessarily consumes network bandwidth defeating the purpose of the
column list feature.

Reported-by: Gunnar Morling
Author: Hou Zhijie
Reviewed-by: Amit Kapila
Backpatch-through: 15
Discussion: https://postgr.es/m/CADGJaX9kiRZ-OH0EpWF5Fkyh1ZZYofoNRCrhapBfdk02tj5EKg@mail.gmail.com

Branch
------
REL_15_STABLE

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

Modified Files
--------------
src/backend/replication/logical/proto.c | 7 +++---
src/backend/replication/pgoutput/pgoutput.c | 6 ++++--
src/include/replication/logicalproto.h | 2 +-
src/test/subscription/t/031_column_list.pl | 33 +++++++++++++++++++++++++++++
4 files changed, 42 insertions(+), 6 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Alvaro Herrera 2022-12-02 09:36:55 pgsql: Generalize ri_RootToPartitionMap to use for non-partition childr
Previous Message Andres Freund 2022-12-02 03:14:21 pgsql: autoconf: Don't AC_SUBST() LD in configure