Re: Implement waiting for wal lsn replay: reloaded

From: Xuneng Zhou <xunengzhou(at)gmail(dot)com>
To: Álvaro Herrera <alvherre(at)kurilemu(dot)de>, Alexander Korotkov <aekorotkov(at)gmail(dot)com>, Michael Paquier <michael(at)paquier(dot)xyz>
Cc: jian he <jian(dot)universality(at)gmail(dot)com>, Tomas Vondra <tomas(at)vondra(dot)me>, Yura Sokolov <y(dot)sokolov(at)postgrespro(dot)ru>, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Implement waiting for wal lsn replay: reloaded
Date: 2025-10-15 08:40:03
Message-ID: CABPTF7XqJ_3EwGXjJhCwW0+gYWvQX070y=fRCS17yrxLpcgVoA@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

On Wed, Oct 15, 2025 at 8:23 AM Xuneng Zhou <xunengzhou(at)gmail(dot)com> wrote:
>
> Hi,
>
> On Tue, Oct 14, 2025 at 9:03 PM Xuneng Zhou <xunengzhou(at)gmail(dot)com> wrote:
> >
> > Hi,
> >
> > On Sat, Oct 4, 2025 at 9:35 AM Xuneng Zhou <xunengzhou(at)gmail(dot)com> wrote:
> > >
> > > Hi,
> > >
> > > On Sun, Sep 28, 2025 at 5:02 PM Xuneng Zhou <xunengzhou(at)gmail(dot)com> wrote:
> > > >
> > > > Hi,
> > > >
> > > > On Fri, Sep 26, 2025 at 7:22 PM Xuneng Zhou <xunengzhou(at)gmail(dot)com> wrote:
> > > > >
> > > > > Hi Álvaro,
> > > > >
> > > > > Thanks for your review.
> > > > >
> > > > > On Tue, Sep 16, 2025 at 4:24 AM Álvaro Herrera <alvherre(at)kurilemu(dot)de> wrote:
> > > > > >
> > > > > > On 2025-Sep-15, Alexander Korotkov wrote:
> > > > > >
> > > > > > > > It's LGTM. The same pattern is observed in VACUUM, EXPLAIN, and CREATE
> > > > > > > > PUBLICATION - all use minimal grammar rules that produce generic
> > > > > > > > option lists, with the actual interpretation done in their respective
> > > > > > > > implementation files. The moderate complexity in wait.c seems
> > > > > > > > acceptable.
> > > > > >
> > > > > > Actually I find the code in ExecWaitStmt pretty unusual. We tend to use
> > > > > > lists of DefElem (a name optionally followed by a value) instead of
> > > > > > individual scattered elements that must later be matched up. Why not
> > > > > > use utility_option_list instead and then loop on the list of DefElems?
> > > > > > It'd be a lot simpler.
> > > > >
> > > > > I took a look at commands like VACUUM and EXPLAIN and they do follow
> > > > > this pattern. v11 will make use of utility_option_list.
> > > > >
> > > > > > Also, we've found that failing to surround the options by parens leads
> > > > > > to pain down the road, so maybe add that. Given that the LSN seems to
> > > > > > be mandatory, maybe make it something like
> > > > > >
> > > > > > WAIT FOR LSN 'xy/zzy' [ WITH ( utility_option_list ) ]
> > > > > >
> > > > > > This requires that you make LSN a keyword, albeit unreserved. Or you
> > > > > > could make it
> > > > > > WAIT FOR Ident [the rest]
> > > > > > and then ensure in C that the identifier matches the word LSN, such as
> > > > > > we do for "permissive" and "restrictive" in
> > > > > > RowSecurityDefaultPermissive.
> > > > >
> > > > > Shall make LSN an unreserved keyword as well.
> > > >
> > > > Here's the updated v11. Many thanks Jian for off-list discussions and review.
> > >
> > > v12 removed unused
> > > +WaitStmt
> > > +WaitStmtParam in pgindent/typedefs.list.
> > >
> >
> > Hi, I’ve split the patch into multiple patch sets for easier review,
> > per Michael’s advice [1].
> >
> > [1] https://www.postgresql.org/message-id/aOMsv9TszlB1n-W7%40paquier.xyz
> >
>
> Patch 2 in v13 is corrupted and patch 3 has an error. Sorry for the
> noise. Here's v14.
>

Made minor changes to #include of xlogwait.h in patch2 to calm CF-bots down.

Best,
Xuneng

Attachment Content-Type Size
v15-0001-Add-pairingheap_initialize-for-shared-memory-usag copy.patch application/octet-stream 3.0 KB
v15-0002-Add-infrastructure-for-efficient-LSN-waiting.patch application/octet-stream 24.7 KB
v15-0003-Implement-WAIT-FOR-command.patch application/octet-stream 47.0 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Xuneng Zhou 2025-10-15 08:43:29 Re: Improve read_local_xlog_page_guts by replacing polling with latch-based waiting
Previous Message shveta malik 2025-10-15 08:38:24 Re: Improve pg_sync_replication_slots() to wait for primary to advance