Thread

  1. Re: Logical Replication of sequences

    vignesh C <vignesh21@gmail.com> — 2025-12-18T09:34:09Z

    On Thu, 18 Dec 2025 at 12:37, Shlok Kyal <shlok.kyal.oss@gmail.com> wrote:
    >
    > Hi Team,
    >
    > While working on another thread, I noticed a bug introduced by commit
    > as part of this thread.
    > In function pg_get_publication_tables, We have code:
    > ```
    >                      if (pub_elem->alltables)
    > pub_elem_tables = GetAllPublicationRelations(RELKIND_RELATION,
    >  pub_elem->pubviaroot);
    > else
    > {
    > List     *relids,
    >    *schemarelids;
    >
    > relids = GetPublicationRelations(pub_elem->oid,
    >  pub_elem->pubviaroot ?
    >  PUBLICATION_PART_ROOT :
    >  PUBLICATION_PART_LEAF);
    > schemarelids = GetAllSchemaPublicationRelations(pub_elem->oid,
    > pub_elem->pubviaroot ?
    > PUBLICATION_PART_ROOT :
    > PUBLICATION_PART_LEAF);
    > pub_elem_tables = list_concat_unique_oid(relids, schemarelids);
    > }
    > ```
    >
    > So, when we create an 'ALL SEQUENCE publication' and we execute
    > 'SELECT * from pg_publication_tables'
    > We will enter the else condition in the above code, which does not
    > seem correct to me.
    > It will call functions which are not required to be called. It will
    > also call the function 'GetPublicationRelations' which contradicts the
    > comment above this function.
    >
    > Similar issue is present for functions "InvalidatePubRelSyncCache" and
    > "AlterPublicationOptions".
    
    Thanks Shlok for reporting these issues,  In the areas highlighted, we
    can skip processing for sequences-only publications. The attached
    patch implements these changes.
    
    Regards,
    Vignesh