Re: [PATCH] Support automatic sequence replication
shveta malik <shveta.malik@gmail.com>
From: shveta malik <shveta.malik@gmail.com>
To: "Zhijie Hou (Fujitsu)" <houzj.fnst@fujitsu.com>
Cc: Amit Kapila <amit.kapila16@gmail.com>, Ajin Cherian <itsajin@gmail.com>, "Hayato Kuroda (Fujitsu)" <kuroda.hayato@fujitsu.com>,
Ashutosh Sharma <ashu.coek88@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>,
shveta malik <shveta.malik@gmail.com>
Date: 2026-03-04T10:24:35Z
Lists: pgsql-hackers
On Mon, Mar 2, 2026 at 1:28 PM Zhijie Hou (Fujitsu) <houzj.fnst@fujitsu.com> wrote: > > Rebased the patch to silence compile warning due to a recent commit > a2c89835. > Thanks for the patch. Please find a few comments for 001: 1) /* * Record the remote sequence's LSN in pg_subscription_rel and mark the - * sequence as READY. + * sequence as READY if updating a sequence that is in INIT state. */ - UpdateSubscriptionRelState(MySubscription->oid, seqoid, SUBREL_STATE_READY, - seqinfo->page_lsn, false); + if (seqinfo->relstate == SUBREL_STATE_INIT) + UpdateSubscriptionRelState(MySubscription->oid, seqoid, SUBREL_STATE_READY, + seqinfo->page_lsn, false); What if page-lsn has changed and we are in READY state, don't we need to update that in pg_subscription_rel? Or is that done somewhere else? 2) + * + * If relstate is SUBREL_STATE_READY, only synchronize sequences that + * have drifted from their publisher values. Otherwise, synchronize + * all sequences. + * + * Returns true/false if any sequences were actually copied. */ +static bool +copy_sequences(WalReceiverConn *conn, List *seqinfos) There is no relstate, comments need correction. 3) Currently we use same state 'COPYSEQ_SUCCESS' for 2 cases: allowed to copy (as returned by validate_seqsync_state and get_and_validate_seq_info) and copy-done (by copy_sequences, copy_sequence). It is slightly confusing. Shall we add one more state for 'allowed' case, could be COPYSEQ_ELIGIBLE or COPYSEQ_PROCEED or COPYSEQ_ALLOWED? COPYSEQ_SUCCESS was used for such a case in previous seq-sync commands too (on HEAD), but now its usage is more in 'allowed' case as compared to HEAD, so perhaps we can change in this patch. But I would like to know what others think here. 4) + * Preliminary check to determine if copying the sequence is allowed. How about this comment: Check whether the user has required privileges on the sequence and whether the sequence has drifted. 5) validate_seqsync_state(): + /* + * Skip synchronization if the sequence is already in READY state and + * has not drifted from the publisher's value. + */ + if (local_last_value == seqinfo->last_value && + local_is_called == seqinfo->is_called) + return COPYSEQ_NO_DRIFT; Since we already have a comment where we check READY state in outer if-block and since we are not checking READY state here, perhaps we can change the above comment to simply: "Skip synchronization if it has not drifted from the publisher's value." thanks Shveta
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Don't include wait_event.h in pgstat.h
- 868825aaeb40 19 (unreleased) cited
-
Don't include proc.h in shm_mq.h
- a2c89835f512 19 (unreleased) cited
-
Fix unsafe RTE_GROUP removal in simplify_EXISTS_query
- 77c7a17a6e5f 19 (unreleased) cited
-
Add sequence synchronization for logical replication.
- 5509055d6956 19 (unreleased) cited