Re: [BUG]Update Toast data failure in logical replication
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Amit Kapila <amit.kapila16@gmail.com>, Dilip Kumar <dilipbalaut@gmail.com>, Petr Jelinek <petr.jelinek@enterprisedb.com>, Peter Eisentraut <peter.eisentraut@enterprisedb.com>, Tomas Vondra <tomas.vondra@enterprisedb.com>, Alvaro Herrera <alvherre@alvh.no-ip.org>, Kuntal Ghosh <kuntalghosh.2007@gmail.com>, "tanghy.fnst@fujitsu.com" <tanghy.fnst@fujitsu.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2022-01-24T21:17:48Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
WAL log unchanged toasted replica identity key attributes.
- 5e01001ffb38 15.0 landed
- b5e060473273 10.21 landed
- 1cd5802ac69a 11.16 landed
- ce349cf176e2 12.11 landed
- caa231be97df 13.7 landed
- 04645bbcae72 14.3 landed
-
Add new wal_level, logical, sufficient for logical decoding.
- e55704d8b2fe 9.4.0 cited
-
Add the notion of REPLICA IDENTITY for a table.
- 07cacba983ef 9.4.0 cited
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