Re: Implement waiting for wal lsn replay: reloaded - Mailing list pgsql-hackers

From Xuneng Zhou
Subject Re: Implement waiting for wal lsn replay: reloaded
Date
Msg-id CABPTF7XfUUvwrNGH=wXr9zEkdA5+QEVO4fju+3yQ9PoMr0fitQ@mail.gmail.com
Whole thread Raw
In response to Re: Implement waiting for wal lsn replay: reloaded  (Xuneng Zhou <xunengzhou@gmail.com>)
List pgsql-hackers
Hi,

On Sun, Sep 28, 2025 at 5:02 PM Xuneng Zhou <xunengzhou@gmail.com> wrote:
>
> Hi,
>
> On Fri, Sep 26, 2025 at 7:22 PM Xuneng Zhou <xunengzhou@gmail.com> wrote:
> >
> > Hi Álvaro,
> >
> > Thanks for your review.
> >
> > On Tue, Sep 16, 2025 at 4:24 AM Álvaro Herrera <alvherre@kurilemu.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.

Best,
Xuneng

Attachment

pgsql-hackers by date:

Previous
From: Masahiko Sawada
Date:
Subject: Re: Clear logical slot's 'synced' flag on promotion of standby
Next
From: Xuneng Zhou
Date:
Subject: Re: Improve read_local_xlog_page_guts by replacing polling with latch-based waiting