Re: Pgoutput not capturing the generated columns

From: vignesh C <vignesh21(at)gmail(dot)com>
To: "Hayato Kuroda (Fujitsu)" <kuroda(dot)hayato(at)fujitsu(dot)com>
Cc: Shubham Khanna <khannashubham1197(at)gmail(dot)com>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>, Rajendra Kumar Dangwal <dangwalrajendra888(at)gmail(dot)com>, "pgsql-hackers(at)lists(dot)postgresql(dot)org" <pgsql-hackers(at)lists(dot)postgresql(dot)org>, "euler(at)eulerto(dot)com" <euler(at)eulerto(dot)com>, Peter Smith <smithpb2250(at)gmail(dot)com>
Subject: Re: Pgoutput not capturing the generated columns
Date: 2024-10-29 09:40:44
Message-ID: CALDaNm1oc-+uav380Z1k6gCZY5GJn5ZYKRexwM+qqGiRinUS-Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Tue, 29 Oct 2024 at 11:19, Hayato Kuroda (Fujitsu)
<kuroda(dot)hayato(at)fujitsu(dot)com> wrote:
>
> Dear Shubham,
>
> Thanks for updating the patch! Here are my comments for v44.
>
> 01. fetch_remote_table_info()
>
> `bool *remotegencolpresent` is accessed unconditionally, but it can cause crash
> if NULL is passed to the function. Should we add an Assert to verify it?

I have not made any changes for this as I felt it is not required.
Also Amit felt the same way as in [1].

> 02. fetch_remote_table_info()
>
> ```
> + if (server_version >= 180000)
> + *remotegencolpresent |= DatumGetBool(slot_getattr(slot, 5, &isnull));
> +
> ```
>
> Can we add Assert(!isnull) like other parts?

Included it.

> 03. fetch_remote_table_info()
>
> Also, we do not have to reach here once *remotegencolpresent becomes true.
> Based on 02 and 03, how about below?
>
> ```
> if (server_version >= 180000 && !(*remotegencolpresent))
> {
> *remotegencolpresent |= DatumGetBool(slot_getattr(slot, 5, &isnull));
> Assert(!isnull);
> }
> ```

Modified

> 04. pgoutput_column_list_init()
>
> + if (att->attgenerated)
> + {
> + if (bms_is_member(att->attnum, cols))
> + gencolpresent = true;
> +
> continue;
> + }
>
> I'm not sure it is correct. Why do you skip the generated column even when it is in
> the column list? Also, can you add comments what you want to do?

Modified it now and added comments.

The v45 version attached has the changes for the same.

[1] - https://www.postgresql.org/message-id/CAA4eK1Keq7hewXGe4mUHuCzEA5%3DZR5wQK0%2BL5TU%2BzVFUMrmOFw%40mail.gmail.com

Regards,
Vignesh

Attachment Content-Type Size
v45-0001-Allow-logical-replication-to-publish-generated-c.patch text/x-patch 20.4 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message David Rowley 2024-10-29 09:47:22 Re: Add ExprState hashing for GROUP BY and hashed SubPlans
Previous Message Heikki Linnakangas 2024-10-29 09:39:03 Re: define pg_structiszero(addr, s, r)