Thread

  1. Re: Logical Replication of sequences

    Peter Smith <smithpb2250@gmail.com> — 2025-12-21T23:10:51Z

    Hi Vignesh,
    
    A couple of review comments for v2-0001
    
    ======
    src/backend/catalog/pg_publication.c
    
    pg_get_publication_tables:
    
    1.
      if (pub_elem->alltables)
      pub_elem_tables = GetAllPublicationRelations(RELKIND_RELATION,
      pub_elem->pubviaroot);
    - else
    + else if (!pub_elem->allsequences)
      {
      List    *relids,
         *schemarelids;
    @@ -1203,8 +1203,13 @@ pg_get_publication_tables(PG_FUNCTION_ARGS)
      table_infos = lappend(table_infos, table_info);
      }
    
    - /* At least one publication is using publish_via_partition_root. */
    - if (pub_elem->pubviaroot)
    + /*
    + * At least one publication is using publish_via_partition_root.
    + * Skip sequences only publications, as publish_via_partition_root
    + * is applicable only to table publications.
    + */
    + if (pub_elem->pubviaroot && !PUB_HAS_SEQUENCES_ONLY(pub_elem->allsequences,
    + pub_elem->alltables))
      viaroot = true;
    
    Won't it be simpler to check this up-front and then just 'continue'?
    Then you wouldn't have to handle "sequence only" for the rest of the
    loop logic.
    
    e.g.
    
    pub_elem = ...
    
    /* Skip this publication if no TABLES are published. */
    if (PUB_HAS_SEQUENCES_ONLY(pub_elem->allsequences, pub_elem->alltables)
      continue;
    
    if (pub_elem->alltables)
      ...
    else
      ...
    
    ======
    src/backend/commands/publicationcmds.c
    
    2.
    - if (!pubform->puballtables && publish_via_partition_root_given &&
    - !publish_via_partition_root)
    + if (!pubform->puballtables && !pubform->puballsequences &&
    + publish_via_partition_root_given && !publish_via_partition_root)
    
    I felt this modified condition ought to be expressed as:
    
    if (!PUB_HAS_SEQUENCES_ONLY(...) && <original condition>
    
    ======
    Kind Regards,
    Peter Smith.
    Fujitsu Australia