From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> |
Cc: | Kevin Martin <martinkd(at)gmail(dot)com>, pgsql-general <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: "Missing" column in Postgres logical replication update message |
Date: | 2022-08-03 15:28:24 |
Message-ID: | 3043713.1659540504@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
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 | Daniel Verite | 2022-08-03 15:46:28 | Re: ICU is not supported in this build. install from source code. |
Previous Message | Kevin Martin | 2022-08-03 15:19:03 | Re: "Missing" column in Postgres logical replication update message |