Re: Logical Replication of sequences

shveta malik <shveta.malik@gmail.com>

From: shveta malik <shveta.malik@gmail.com>
To: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Cc: vignesh C <vignesh21@gmail.com>, Peter Smith <smithpb2250@gmail.com>, Amit Kapila <amit.kapila16@gmail.com>, Dilip Kumar <dilipbalaut@gmail.com>, Shlok Kyal <shlok.kyal.oss@gmail.com>, Chao Li <li.evan.chao@gmail.com>, Masahiko Sawada <sawada.mshk@gmail.com>, Nisha Moond <nisha.moond412@gmail.com>, Peter Eisentraut <peter@eisentraut.org>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Euler Taveira <euler@eulerto.com>, Michael Paquier <michael@paquier.xyz>, "Jonathan S. Katz" <jkatz@postgresql.org>, "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>, shveta malik <shveta.malik@gmail.com>
Date: 2025-10-15T04:11:31Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Doc: Add documentation for sequence synchronization.

  2. Remove unused assignment in CREATE PUBLICATION grammar.

  3. Add seq_sync_error_count to subscription statistics.

  4. Fix few issues in commit 5509055d69.

  5. Add sequence synchronization for logical replication.

  6. Add worker type argument to logical replication worker functions.

  7. Introduce "REFRESH SEQUENCES" for subscriptions.

  8. Refactor logical worker synchronization code into a separate file.

  9. Standardize use of REFRESH PUBLICATION in code and messages.

  10. Add "ALL SEQUENCES" support to publications.

  11. Expose sequence page LSN via pg_get_sequence_data.

  12. Resume conflict-relevant data retention automatically.

  13. Post-commit review fixes for 228c370868.

  14. Generate GUC tables from .dat file

Please find a few more comments on 002:


1)
-   This catalog only contains tables known to the subscription after running
+   This catalog only contains tables and sequences known to the
subscription after running

Shall we get rid of 'only' now?

2)
+ * A single sequencesync worker synchronizes all sequences, so
+ * only stop workers when relation kind is not sequence.

This comment refers sequencesync worker which is in future patches. Is it okay?

3)
UpdateSubscriptionRelState

        if (!HeapTupleIsValid(tup))
                elog(ERROR, "subscription table %u in subscription %u
does not exist",
                         relid, subid);

table -->relation as AlterSubscription_refresh_seq() also invokes this.

4)
check_publications_origin :

        if (res->status != WALRCV_OK_TUPLES)
                ereport(ERROR,
                                (errcode(ERRCODE_CONNECTION_FAILURE),
                                 errmsg("could not receive list of
replicated tables from the publisher: %s",
                                                res->err)));

It could be sequences also.
We can either make it as 'replicated tables and/or sequences' or
simply 'replicated relations'

5)
fetch_relation_list:
Same here:
        if (res->status != WALRCV_OK_TUPLES)
                ereport(ERROR,
                                (errcode(ERRCODE_CONNECTION_FAILURE),
                                 errmsg("could not receive list of
replicated tables from the publisher: %s",
                                                res->err)));


6)
CreateSubscription:
        /*
         * Connect to remote side to execute requested commands and fetch table
         * info.
         */

We can update this existing comment to mention sequences as well.

thanks
Shveta