Re: [BUG]Update Toast data failure in logical replication - Mailing list pgsql-hackers

From Andres Freund
Subject Re: [BUG]Update Toast data failure in logical replication
Date
Msg-id 20220124211748.tvicsfjkcgukclld@alap3.anarazel.de
Whole thread Raw
In response to Re: [BUG]Update Toast data failure in logical replication  (Robert Haas <robertmhaas@gmail.com>)
Responses Re: [BUG]Update Toast data failure in logical replication
List pgsql-hackers
Hi,

On 2022-01-24 15:10:05 -0500, Robert Haas wrote:
> I think we realized when we were working on the logical decoding stuff
> that the key columns of the old tuple would have to be detoasted in
> order for the mechanism to work, because I remember worrying about
> whether it would potentially be a problem that the WAL record would
> end up huge. However, I think we believed that the new tuple wouldn't
> need to have the detoasted values, because logical decoding is
> designed to notice all the TOAST insertions for the new tuple and
> reassemble those separate chunks to get the original value back.

Possibly the root of the problem is that we/I didn't think of cases where the
primary key is an external toast datum - in moast scenarios you'd an error
about a too wide index tuple. But of course that neglects cases where toasting
happens due to SET STORAGE or due to the aggregate tuple width, rather than
individual column width.


> And off-hand I'm not sure why that logic doesn't apply just as much to the
> key columns as any others.

The difference is that it's mostly fine to not have unchanging key columns as
part of decoded update - you just don't update those columns. But you can't do
that without knowing the replica identity...

Greetings,

Andres Freund



pgsql-hackers by date:

Previous
From: Andrew Dunstan
Date:
Subject: Re: fairywren is generating bogus BASE_BACKUP commands
Next
From: Stephen Frost
Date:
Subject: Re: CREATEROLE and role ownership hierarchies