Re: Logical Replication of sequences

vignesh C <vignesh21@gmail.com>

From: vignesh C <vignesh21@gmail.com>
To: shveta malik <shveta.malik@gmail.com>
Cc: Peter Smith <smithpb2250@gmail.com>, Chao Li <li.evan.chao@gmail.com>, Masahiko Sawada <sawada.mshk@gmail.com>, "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>, "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>, Dilip Kumar <dilipbalaut@gmail.com>, Shlok Kyal <shlok.kyal.oss@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>, Amit Kapila <amit.kapila16@gmail.com>
Date: 2025-11-05T14:44:48Z
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

Attachments

On Wed, 5 Nov 2025 at 15:11, shveta malik <shveta.malik@gmail.com> wrote:
>
> Please find a few comments on 003 patch (seqsync_error_count)
>
> 1)
> + /*
> + * Report the worker failed during either sequence synchronization or
> + * table synchronization or apply.
> + */
>
> Shall we tweak it slightly to:
> Report the worker failed during sequence synchronization, table
> synchronization, or apply.

Modified

> 2)
>
> + SELECT count(1) = 1 FROM pg_stat_subscription_stats
> + WHERE subname = '$sub_name' and seq_sync_error_count > 0 and
> sync_error_count > 0
>   ])
>     or die
>     qq(Timed out while waiting for tablesync errors for subscription
> '$sub_name');
>
> Since we are checking both table-sync and seq-sync errors here, we
> shall update the failure-message.

Modified

> 3)
> + # Change the sequence start value on the subscriber so that it
> doesn't error out.
> + $node_subscriber->safe_psql($db,
> + qq(ALTER SEQUENCE $sequence_name INCREMENT 1));
>
> Please mention in comment 'Change the sequence start value to default....'.
> Otherwise it is not clear why changing to 1 is helping here as the
> previous creation of seq on pub did not mention any 'INCREMENT' value
> at all.

Modified

> 4)
>
> - # Wait for initial tablesync to finish.
> + # Wait for initial sync to finish.
>   $node_subscriber->poll_query_until(
>   $db,
>   qq[
> - SELECT count(1) = 1 FROM pg_subscription_rel
> - WHERE srrelid = '$table_name'::regclass AND srsubstate in ('r', 's')
> + SELECT count(1) = 2 FROM pg_subscription_rel
> + WHERE srrelid IN ('$table_name'::regclass,
> '$sequence_name'::regclass) AND srsubstate in ('r', 's')
>   ])
>     or die
>     qq(Timed out while waiting for subscriber to synchronize data for
> table '$table_name'.);
>
>
> a) Will it be better to separate the 2 queries as the table-sync can
> be 'r' and 's', while seq-sync has to be 'r'.
>
> b) If we plan to keep the same as above, the failure-message needs to
> be changed as it mentions only table.

I have separated the query to check individually for table sync and
sequence sync.

The attached v20251105 version patch has the changes for the same.

Regards,
Vignesh