pg.ddx.io  pgsql-committers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Amit Kapila <akapila@postgresql.org>
To: pgsql-committers@lists.postgresql.org
Subject: pgsql: Avoid unconditionally filling in missing values with NULL in pgo
Date: Mon, 27 Nov 2023 03:49:56 +0000
Message-ID: <E1r7Sd9-007RnO-SB@gemulon.postgresql.org> (raw)

Avoid unconditionally filling in missing values with NULL in pgoutput.

52e4f0cd4 introduced a bug in pgoutput in which missing values in tuples
were incorrectly filled in with NULL. The problem was the use of
CreateTupleDescCopy where CreateTupleDescCopyConstr was required, as the
former drops the constraints in the tuple description (specifically, the
default value constraint) on the floor.

The bug could result in incorrectness when a table replicated via
`REPLICA IDENTITY FULL` underwent a schema change that added a column
with a default value. The problem is that in such cases updates fill NULL
values in old tuples for missing columns for default values. Then on the
subscriber, we failed to find a matching tuple and missed updating the
required row.

Author: Nikhil Benesch
Reviewed-by: Hou Zhijie, Amit Kapila
Backpatch-through: 15
Discussion: http://postgr.es/m/CAPWqQZTEpZQamYsGMn6ZDRvVywwpVPiKH6OY4KSgA+NmeqFNzA@mail.gmail.com

Branch
------
REL_15_STABLE

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

Modified Files
--------------
src/backend/replication/pgoutput/pgoutput.c |  4 +--
src/test/subscription/t/100_bugs.pl         | 53 +++++++++++++++++++++++++++++
2 files changed, 55 insertions(+), 2 deletions(-)



view thread (3+ messages)  latest in thread

Message-ID: <E1r7Sd9-007RnO-SB@gemulon.postgresql.org>
Permalink:  ../E1r7Sd9-007RnO-SB@gemulon.postgresql.org/
Also on:    postgresql.org/message-id/E1r7Sd9-007RnO-SB@gemulon.postgresql.org

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-committers@postgresql.org
  Cc: akapila@postgresql.org, pgsql-committers@lists.postgresql.org
  Subject: Re: pgsql: Avoid unconditionally filling in missing values with NULL in pgo
  In-Reply-To: <E1r7Sd9-007RnO-SB@gemulon.postgresql.org>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox