From: | vignesh C <vignesh21(at)gmail(dot)com> |
---|---|
To: | "Hayato Kuroda (Fujitsu)" <kuroda(dot)hayato(at)fujitsu(dot)com> |
Cc: | shveta malik <shveta(dot)malik(at)gmail(dot)com>, Nisha Moond <nisha(dot)moond412(at)gmail(dot)com>, Dilip Kumar <dilipbalaut(at)gmail(dot)com>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>, Peter Smith <smithpb2250(at)gmail(dot)com>, Masahiko Sawada <sawada(dot)mshk(at)gmail(dot)com>, Shlok Kyal <shlok(dot)kyal(dot)oss(at)gmail(dot)com>, Peter Eisentraut <peter(at)eisentraut(dot)org>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Euler Taveira <euler(at)eulerto(dot)com>, Michael Paquier <michael(at)paquier(dot)xyz>, "Zhijie Hou (Fujitsu)" <houzj(dot)fnst(at)fujitsu(dot)com>, "Jonathan S(dot) Katz" <jkatz(at)postgresql(dot)org> |
Subject: | Re: Logical Replication of sequences |
Date: | 2025-08-18 10:06:45 |
Message-ID: | CALDaNm13K+AjnkLuSu++s_E+uYCZTiDS-8XE0MhwEte_GpSP6Q@mail.gmail.com |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Fri, 15 Aug 2025 at 16:46, Hayato Kuroda (Fujitsu)
<kuroda(dot)hayato(at)fujitsu(dot)com> wrote:
>
> Dear Vignesh,
>
> Thanks for updating the patch. Here are my small comments:
>
> 01.
> Per pgindent report, publicationcmds.c should be fixed.
Modified
> 02.
> ```
> + ScanKeyInit(&skey[1],
> + Anum_pg_subscription_rel_srsubstate,
> + BTEqualStrategyNumber, F_CHARNE,
> + CharGetDatum(SUBREL_STATE_READY));
> ```
>
> I felt it is more natural to "srsubstate = 'i'", instead of "srsubstate <> 'r'"
Modified
> 03.
> ```
> + table_close(sequence_rel, NoLock);
> + }
> +
> + /* Cleanup */
> + systable_endscan(scan);
> + table_close(rel, AccessShareLock);
> +
> + CommitTransactionCommand();
> ```
>
> To clarify, can we release the sequence at the end of the inner loop?
>
> I found that sequence relation is closed (but not release the lock) then commit
> the transaction once. This approach cannot avoid dropping it by concurrent
> transactions, but maybe you did due to the performance reason. So...I felt we
> may able to release bit earlier.
Modified
> 04.
> ```
> + sequence_rel = try_table_open(seqinfo->localrelid, RowExclusiveLock);
> +
> + /* Get the local sequence */
> + tup = SearchSysCache1(SEQRELID, ObjectIdGetDatum(seqinfo->localrelid));
> + if (!sequence_rel || !HeapTupleIsValid(tup))
> + {
> + elog(LOG, "skip synchronization of sequence \"%s.%s\" because it has been dropped concurrently",
> + seqinfo->nspname, seqinfo->seqname);
> +
> + batch_skipped_count++;
> + continue;
> + }
> ```
>
> a. Code comment can be atop try_table_open().
> b. Isn't it enough to check HeapTupleIsValid() here?
Modified
> 05.
> ```
> + /* Update the sequence only if the parameters are identical */
> + if (seqform->seqtypid == seqtypid &&
> + seqform->seqmin == seqmin && seqform->seqmax == seqmax &&
> + seqform->seqcycle == seqcycle &&
> + seqform->seqstart == seqstart &&
> + seqform->seqincrement == seqincrement)
> ```
>
> I noticed that seqcache is not compared. Is there a reason?
I felt we could go ahead and set the sequence value even if seqcache
is different unlike the other sequence parameters. That is the reason
I did not compare it. Thoughts?
> 06.
> ```
> + foreach_ptr(LogicalRepSequenceInfo, seq_info, sequences_to_copy)
> + {
> + pfree(seq_info->seqname);
> + pfree(seq_info->nspname);
> + pfree(seq_info);
> + }
> ```
>
> Per comment atop foreach_delete_current(), we should not directly do pfree()
> the entry. Can you use foreach_delete_current()? I.e.,
Modified
> 07.
> ```
> foreach_ptr(LogicalRepSequenceInfo, seq_info, sequences_to_copy)
> {
> pfree(seq_info->seqname);
> pfree(seq_info->nspname);
>
> sequences_to_copy =
> foreach_delete_current(sequences_to_copy, seq_info);
> }
> ```
Modified
> 08.
> ```
> +$node_subscriber->init(allows_streaming => 'logical');
> ```
>
> Actually no need to set to 'logical'.
Modified
Thanks for the comments, the updated version has the changes for the same.
Regards,
Vignesh
Attachment | Content-Type | Size |
---|---|---|
v20250818-0001-Enhance-pg_get_sequence_data-function.patch | application/octet-stream | 7.4 KB |
v20250818-0002-Introduce-ALL-SEQUENCES-support-for-Postgr.patch | application/octet-stream | 110.7 KB |
v20250818-0004-Introduce-REFRESH-PUBLICATION-SEQUENCES-fo.patch | application/octet-stream | 43.4 KB |
v20250818-0005-New-worker-for-sequence-synchronization-du.patch | application/octet-stream | 85.8 KB |
v20250818-0003-Reorganize-tablesync-Code-and-Introduce-sy.patch | application/octet-stream | 24.6 KB |
v20250818-0006-Documentation-for-sequence-synchronization.patch | application/octet-stream | 34.3 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2025-08-18 10:23:03 | Re: fixing tsearch locale support |
Previous Message | Bertrand Drouvot | 2025-08-18 09:43:31 | Re: Improve LWLock tranche name visibility across backends |