RE: Logical Replication of sequences
Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Doc: Add documentation for sequence synchronization.
- 55cefadde874 19 (unreleased) landed
-
Remove unused assignment in CREATE PUBLICATION grammar.
- bfb7419b0bbe 19 (unreleased) landed
-
Add seq_sync_error_count to subscription statistics.
- f6a4c498dcf6 19 (unreleased) landed
-
Fix few issues in commit 5509055d69.
- 5a4eba558aa7 19 (unreleased) landed
-
Add sequence synchronization for logical replication.
- 5509055d6956 19 (unreleased) landed
-
Add worker type argument to logical replication worker functions.
- 3e8e05596a02 19 (unreleased) landed
-
Introduce "REFRESH SEQUENCES" for subscriptions.
- f0b3573c3aac 19 (unreleased) landed
-
Refactor logical worker synchronization code into a separate file.
- 41c674d2e31e 19 (unreleased) landed
-
Standardize use of REFRESH PUBLICATION in code and messages.
- 2436b8c047ff 19 (unreleased) landed
-
Add "ALL SEQUENCES" support to publications.
- 96b378497346 19 (unreleased) landed
-
Expose sequence page LSN via pg_get_sequence_data.
- b93172ca59f4 19 (unreleased) landed
-
Resume conflict-relevant data retention automatically.
- 0d48d393d465 19 (unreleased) cited
-
Post-commit review fixes for 228c370868.
- 1f7e9ba3ac4e 19 (unreleased) cited
-
Generate GUC tables from .dat file
- 63599896545c 19 (unreleased) cited
Attachments
- v20251014-0005-Documentation-for-sequence-synchronization.patch (application/octet-stream) patch v20251014-0005
- v20251014-0001-Update-ALTER-SUBSCRIPTION-REFRESH-to-ALTER.patch (application/octet-stream) patch v20251014-0001
- v20251014-0002-Introduce-REFRESH-SEQUENCES-for-subscripti.patch (application/octet-stream) patch v20251014-0002
- v20251014-0003-Reorganize-tablesync-Code-and-Introduce-sy.patch (application/octet-stream) patch v20251014-0003
- v20251014-0004-New-worker-for-sequence-synchronization-du.patch (application/octet-stream) patch v20251014-0004
On Tuesday, October 14, 2025 11:13 AM Kuroda, Hayato/黒田 隼人 <kuroda.hayato@fujitsu.com> wrote:
> Dear Vignesh,
>
> Thanks for updating the patch. Here are comments for 0002.
>
> ```
> + if (pubrelkind == '\0')
> + return;
> ```
>
> Instead of adding this part, can we provide another function which only checks
> the type mismatch? New one can be called from CreateSubscription() and
> AlterSubscription_refresh().
Per analysis, the checks in the function should be performed for all the cases,
so I did not add a new function.
>
> ```
> +#include "nodes/primnodes.h"
> ...
> +typedef struct SubscriptionRelKind
> +{
> + RangeVar *rv;
> + char relkind;
> +}
> ```
>
> The data structure is used in subscriptioncmds.c. Can we move the definition
> to the file?
> Also, `relkind` indicates the type of relation on publisher. Can you clarify the
> point like `relkind_on_pub`?
I chose to change the type name from SubscriptionRelKind to
PublicationRelKind since it is used to describe the relation on publisher.
Attach the latest patch that includes the following changes:
0001:
* Addressed Peter's comments[1]
0002:
* Addressed Amit's comments[2]
* Addressed Shveta's comments[3]
* Addressed Kuroda's comments[4]
* Fixed an issue where check_publications_origin checked
partitions and ancestors of sequences that were unnecessary.
* Fixed an issue where check_publications_origin performed redundant checks on
the origin, even when origin option is set to ANY.
* Fixed an issue where check_publications_origin unnecessarily checked sequences
when only table checks are required, particularly when retain_dead_tuples is
true and the origin is set to ANY.
* Changed CheckSubscriptionRelkind to do the relkind match check during replication
as well. This ensures detection of relkind mismatches, when a local table on
the subscriber is dropped and subsequently replaced by a new sequence with the
same name after the initial sync.
0003~0005:
Unchanged.
TODO:
* The latest comment from Shveta[5].
* The comment from Amit[6] to avoid creating slot/origin for sequence only subscription.
[1] https://www.postgresql.org/message-id/CAHut%2BPuDCMu5QDmAo%2BMW0hKSThACfqfaPBGcwrBOUFE3RUPP%3Dw%40mail.gmail.com
[2] https://www.postgresql.org/message-id/CAA4eK1%2BSMY-dEhnFw8wXYSygk4Xr%2BSZJ-zEnuhxb%2BFmFrN0AzQ%40mail.gmail.com
[3] https://www.postgresql.org/message-id/CAJpy0uC5H0jtmUEN8ES_PAMaYCfjmqEVuJiCdB%3DAa98ivqc9FA%40mail.gmail.com
[4] https://www.postgresql.org/message-id/OSCPR01MB149667963060BB6A068B275B9F5EBA%40OSCPR01MB14966.jpnprd01.prod.outlook.com
[5] https://www.postgresql.org/message-id/CAJpy0uBpxor5EaSDFd0u2kXV5zgEkSq7g6iaSNwVXY0U1Rk4iA%40mail.gmail.com
[6] https://www.postgresql.org/message-id/CAA4eK1J%3Dgc8WXVc2Hy0Xcq4KtWU-z-dxBiZHbT62jz3QPBZ5CQ%40mail.gmail.com
Best Regards,
Hou zj