Re: "Missing" column in Postgres logical replication update message

From: Kevin Martin <martinkd(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>, pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: "Missing" column in Postgres logical replication update message
Date: 2022-08-03 16:31:28
Message-ID: CAKYsA6U19g9bVY-QS3S_ty=c1Cyy-aZ-E3Xes2Hc=M=YvFUDUQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Thanks for the response, Tom. I think that's exactly what's going on here.

On Wed, Aug 3, 2022 at 11:28 AM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:

> Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> writes:
> > On 8/3/22 08:09, Kevin Martin wrote:
> >> I thought that any UPDATE message in the replication logs is designed
> to
> >> include all values for all columns. Is that correct?
>
> Buried deep in the wire protocol specification is this bit:
>
> ----
> The following message parts are shared by the above messages.
>
> TupleData
>
> Int16
> Number of columns.
>
> Next, one of the following submessages appears for each column (except
> generated columns):
>
> ...
>
> Byte1('u')
> Identifies unchanged TOASTed value (the actual value is not sent).
> ----
>
> So that right there is two cases where we omit data for a column.
> I suspect the "unchanged toasted data" case is what matters for
> your purposes. Maybe you've found some code that fails to implement
> that correctly?
>
> regards, tom lane
>

In response to

Browse pgsql-general by date

  From Date Subject
Next Message zaphod61 2022-08-03 17:16:44 Upgrading from 12.3 to 12.11
Previous Message Daniel Verite 2022-08-03 15:46:28 Re: ICU is not supported in this build. install from source code.