Re: Logical Replication of sequences

vignesh C <vignesh21@gmail.com>

From: vignesh C <vignesh21@gmail.com>
To: Amit Kapila <amit.kapila16@gmail.com>
Cc: Shinya Kato <shinya11.kato@gmail.com>, 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>, shveta malik <shveta.malik@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>
Date: 2025-11-06T05:18:27Z
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 Thu, 6 Nov 2025 at 10:10, Amit Kapila <amit.kapila16@gmail.com> wrote:
>
> On Thu, Nov 6, 2025 at 8:00 AM Shinya Kato <shinya11.kato@gmail.com> wrote:
> >
> >
> > I discovered that the sequence sync worker fails for sequences
> > containing single quotes.
> > ---
> > 2025-11-06 10:22:50.335 JST [1096008] ERROR:  could not fetch sequence
> > information from the publisher: ERROR:  syntax error at or near
> > "quote"
> >         LINE 4: FROM ( VALUES ('public', 'regress'quote', 0), ('public', 'ho...
> >                                                   ^
> > 2025-11-06 10:22:50.335 JST [1088168] LOG:  background worker "logical
> > replication sequencesync worker" (PID 1096008) exited with exit code 1
> > ---
> >
> > I haven't read all the threads, so I might be mistaken, but I've
> > created a patch.

Thanks Kato-san for finding this issue and sharing the changes.

>
> 1.
> + nsp_literal = quote_literal_cstr(seqinfo->nspname);
> + seq_literal = quote_literal_cstr(seqinfo->seqname);
> +
> + appendStringInfo(seqstr, "(%s, %s, %d)",
> + nsp_literal, seq_literal, idx);
> +
> + pfree(nsp_literal);
> + pfree(seq_literal);
>
> We don't need this retail pfree as the current memory context at this
> place will be TopTransactionContext that will anyway be freed after a
> batch of sequences.

Modified

> 2.
> @@ -147,13 +148,18 @@ get_sequences_string(List *seqindexes, StringInfo buf)
>   resetStringInfo(buf);
>   foreach_int(seqidx, seqindexes)
>   {
> + char *qualified_name;
> +
>   LogicalRepSequenceInfo *seqinfo =
>   (LogicalRepSequenceInfo *) list_nth(seqinfos, seqidx);
>
>   if (buf->len > 0)
>   appendStringInfoString(buf, ", ");
>
> - appendStringInfo(buf, "\"%s.%s\"", seqinfo->nspname, seqinfo->seqname);
> + qualified_name = quote_qualified_identifier(seqinfo->nspname,
> + seqinfo->seqname);
> + appendStringInfoString(buf, qualified_name);
>
> The function get_sequences_string() is used in WARNING code path and
> normally we don't quote names in messages. For example, see following
> cases:

Agree on this.

> 3. Also, see, if the newly added test can be combined with other existing tests.

Modified

The patch also includes the change for buildfarm failure at [1].
[1] - https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=prion&dt=2025-11-05%2010%3A30%3A15

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

Regards,
Vignesh