Re: Logical Replication of sequences - Mailing list pgsql-hackers

From vignesh C
Subject Re: Logical Replication of sequences
Date
Msg-id CALDaNm3H0vAzhC7aEChxF9_eQahnsAS-2WcPX_x_sbFZe9sXrw@mail.gmail.com
Whole thread Raw
In response to Re: Logical Replication of sequences  (shveta malik <shveta.malik@gmail.com>)
List pgsql-hackers
On Mon, 22 Sept 2025 at 12:03, shveta malik <shveta.malik@gmail.com> wrote:
>
> On Thu, Sep 18, 2025 at 4:07 PM vignesh C <vignesh21@gmail.com> wrote:
> >
> > Thanks for the comments, these are handled in the attached patch.
> >
>
> Please find a few comments:
>
>
> patch005:
> 1)
> GetSubscriptionRelations:
> + /* Skip sequences if they were not requested */
> + if (!get_sequences && (relkind == RELKIND_SEQUENCE))
> + continue;
> +
> + /* Skip tables if they were not requested */
> + if (!get_tables && (relkind != RELKIND_SEQUENCE))
> + continue;
>
> The use of negated conditions makes the logic harder to follow,
> especially in the second if block.
>
> Can we write it as:
>    bool is_sequence = (relkind == RELKIND_SEQUENCE);
>
>    /* Skip if the relation type is not requested */
>    if ((get_tables && is_sequence) ||
>        (get_sequences && !is_sequence))
>        continue;
>
> Or at-least:
> /* Skip sequences if they were not requested */
> if (get_tables && (relkind == RELKIND_SEQUENCE))
>   continue;
>
> /* Skip tables if they were not requested */
> if (get_sequences && (relkind != RELKIND_SEQUENCE))
>   continue;

I felt this would not work. Say we want both sequences and tables,
won't it skip the sequence this way from:
if (get_tables && (relkind == RELKIND_SEQUENCE))
  continue;

Rest of the comments were fixed, also the comment from [1] is fixed in
the attached patch.
[1] - https://www.postgresql.org/message-id/CAJpy0uAdD9XtZCE34BJhbvncMgfmMuTS0ZXLP1P=g+wpRC8vqQ@mail.gmail.com

Regards,
Vignesh

Attachment

pgsql-hackers by date:

Previous
From: Ashutosh Sharma
Date:
Subject: Re: Report bytes and transactions actually sent downtream
Next
From: Ashutosh Sharma
Date:
Subject: Re: Clear logical slot's 'synced' flag on promotion of standby