Re: Logical Replication of sequences

vignesh C <vignesh21@gmail.com>

From: vignesh C <vignesh21@gmail.com>
To: Dilip Kumar <dilipbalaut@gmail.com>
Cc: shveta malik <shveta.malik@gmail.com>, Nisha Moond <nisha.moond412@gmail.com>, Amit Kapila <amit.kapila16@gmail.com>, Peter Smith <smithpb2250@gmail.com>, "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>, Masahiko Sawada <sawada.mshk@gmail.com>, Shlok Kyal <shlok.kyal.oss@gmail.com>, Peter Eisentraut <peter@eisentraut.org>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Euler Taveira <euler@eulerto.com>, Michael Paquier <michael@paquier.xyz>, "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>, "Jonathan S. Katz" <jkatz@postgresql.org>
Date: 2025-07-23T06:52:52Z
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 Mon, 21 Jul 2025 at 15:24, Dilip Kumar <dilipbalaut@gmail.com> wrote:
>
> On Mon, Jul 21, 2025 at 2:36 PM vignesh C <vignesh21@gmail.com> wrote:
> >
> > On Mon, 21 Jul 2025 at 11:15, Dilip Kumar <dilipbalaut@gmail.com> wrote:
> > >
> > > On Mon, Jul 21, 2025 at 10:36 AM Dilip Kumar <dilipbalaut@gmail.com> wrote:
> > > >
> > > > I was just trying a different test, so I realized that ALTER
> > > > PUBLICATION ADD SEQUENCE is not supported, any reason for the same?
> > > >
> > > > postgres[154731]=# ALTER PUBLICATION pub ADD sequence s1;
> > > > ERROR:  42601: invalid publication object list
> > > > LINE 1: ALTER PUBLICATION pub ADD sequence s1;
> > > > DETAIL:  One of TABLE or TABLES IN SCHEMA must be specified before a
> > > > standalone table or schema name.
> > > > LOCATION:  preprocess_pubobj_list, gram.y:19685
> > > >
> > > Also I noticed that
> > > 1. We don't allow creating publication with individual sequences (e.g.
> > > CREATE PUBLICATION pub FOR SEQUENCE s1;).  Is it because the main
> > > purpose of this sync is major version upgrade and we do not have
> > > scenarios for replicating a few sequences or there are some technical
> > > difficulties in achieving that or both.
> >
> > There are no technical difficulties here. The main goal was to support
> > all sequences necessary for the upgrade scenario. Once that is
> > complete, the implementation can be extended based on additional use
> > cases.
> >
> > > 2. This syntax works (CREATE PUBLICATION pub FOR ALL TABLES,
> > > SEQUENCES;) but tab completion doesn't suggest this
> >
> > Nisha had analysed this and shared this  earlier at [1]:
> > Tab-completion is not supported after a comma (,) in any other cases.
> > For example, the following commands are valid, but tab-completion does
> > not work after the comma:
> > CREATE PUBLICATION pub7 FOR TABLE t1, TABLES IN SCHEMA public;
> > CREATE PUBLICATION pub7 FOR TABLES IN SCHEMA public, TABLES IN SCHEMA schema2;
> >
> > > 3. Some of the syntaxes works for sequence which doesn't make sense to
> > > me, as listed below, I think there are more
> > >
> > > postgres[154731]=# CREATE PUBLICATION insert_only FOR ALL SEQUENCES
> > > WITH (publish = 'insert');
> > > CREATE PUBLICATION
> > >
> > > postgres[154731]=# CREATE PUBLICATION pub FOR ALL SEQUENCES WITH (
> > > PUBLISH_VIA_PARTITION_ROOT );
> > > CREATE PUBLICATION
> >
> > There is a documentation for this at sql-createpublication.html:
> > WITH ( publication_parameter [= value] [, ... ] )
> >     This clause specifies optional parameters for a publication when
> > publishing tables. This clause is not applicable for sequences.
> >
> > I felt it was enough, should we do anything more here?
> >
> > [1] - https://www.postgresql.org/message-id/CABdArM5axwoTorZnJww5rE79SNzvnnXCfWkv7XJex1Rkz%3DJDog%40mail.gmail.com
>
> I meant the PUBLISH_VIA_PARTITION_ROOT and other options inside the
> WITH() that are not applicable for SEQUENCES, so shall we throw an
> error if we are only publishing sequences and using these options?

This is handled in the v20250723 version patch attached.

Also the comment from [1] is addressed.
[1] - https://www.postgresql.org/message-id/CAJpy0uB0HmmiqrE5DrvH-jZPgSM7iiObGuTbg5JeOrEPT_5xPw%40mail.gmail.com

Regards,
Vignesh