pgsql: Fix toast rewrites in logical decoding.

From: Amit Kapila <akapila(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix toast rewrites in logical decoding.
Date: 2021-08-25 04:49:58
Message-ID: E1mIkrO-0006zQ-K0@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix toast rewrites in logical decoding.

Commit 325f2ec555 introduced pg_class.relwrite to skip operations on
tables created as part of a heap rewrite during DDL. It links such
transient heaps to the original relation OID via this new field in
pg_class but forgot to do anything about toast tables. So, logical
decoding was not able to skip operations on internally created toast
tables. This leads to an error when we tried to decode the WAL for the
next operation for which it appeared that there is a toast data where
actually it didn't have any toast data.

To fix this, we set pg_class.relwrite for internally created toast tables
as well which allowed skipping operations on them during logical decoding.

Author: Bertrand Drouvot
Reviewed-by: David Zhang, Amit Kapila
Backpatch-through: 11, where it was introduced
Discussion: https://postgr.es/m/b5146fb1-ad9e-7d6e-f980-98ed68744a7c@amazon.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/29b5905470285bf730f6fe7cc5ddb3513d0e6945

Modified Files
--------------
contrib/test_decoding/expected/toast.out | 22 ++++++++++++++++++++++
contrib/test_decoding/sql/toast.sql | 16 ++++++++++++++++
src/backend/catalog/toasting.c | 29 ++++++++++++++++++-----------
src/backend/commands/cluster.c | 10 +++++++++-
src/backend/commands/tablecmds.c | 31 +++++++++++++++++++++++++++++++
src/include/catalog/toasting.h | 2 +-
src/include/commands/tablecmds.h | 2 ++
7 files changed, 99 insertions(+), 13 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Fabien COELHO 2021-08-25 05:37:22 Re: pgsql: psql: Add test for query canceling
Previous Message Etsuro Fujita 2021-08-25 04:05:52 pgsql: Doc: Tweak function prototype indentation for consistency.