Re: Logical replication row filter loses unchanged toasted columns

From: Matthias van de Meent <boekewurm+postgres(at)gmail(dot)com>
To: Shinya Kato <shinya11(dot)kato(at)gmail(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Logical replication row filter loses unchanged toasted columns
Date: 2026-08-13 13:50:34
Message-ID: CAEze2WjKEQqXaD-wtJK=1M-ok3Ud7AdK9Z0hfsChyY9twoatKg@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Wed, 12 Aug 2026 at 05:23, Shinya Kato <shinya11(dot)kato(at)gmail(dot)com> wrote:
>
> I see three ways to deal with this.
>
> Option A: detect the missing value in pgoutput_row_filter() and raise
> an error naming the table and the column, trading silent data loss for
> a loud failure. [...]
>
> Option B: when a table belongs to a publication with a row filter,
> make heap_update() log the whole old tuple, as it already does for
> REPLICA IDENTITY FULL. [...]
>
> Option C: document the restriction and leave the behavior alone. [...]

Or, an option D: Forbid the creation (and use) of filtered publication
table definitions for tables which contain a non-identity
varlena-typed column (i.e. the type's typlen is -1).

Publishing varlena identity columns is safe, and users can just avoid
including varlena columns when they add a filter; we should not allow
users to create publications of which we know ahead of time that the
data stream is likely to break on our side.

I think this option D can be backported, but would require some
pg_upgrade checks.

Kind regards,

Matthias van de Meent
Databricks (https://www.databricks.com)

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Pierre Forstmann 2026-08-13 14:23:29 Re: [PATCH] Add planner support function to two-argument regexp_like()
Previous Message Bryan Green 2026-08-13 13:42:55 Re: [PATCH] Harden recovery/t/051_effective_wal_level against WAL recycling