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
>
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. |