Re: Implement waiting for wal lsn replay: reloaded

From: Xuneng Zhou <xunengzhou(at)gmail(dot)com>
To: pgsql-hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Cc: Alexander Korotkov <aekorotkov(at)gmail(dot)com>, Michael Paquier <michael(at)paquier(dot)xyz>, 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>, Álvaro Herrera <alvherre(at)kurilemu(dot)de>
Subject: Re: Implement waiting for wal lsn replay: reloaded
Date: 2025-10-16 07:11:58
Message-ID: CABPTF7V4yxMvLevcs4tvGR54-AS-o9L5J8s8W4M3QS8eMsQb+w@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

On Wed, Oct 15, 2025 at 8:48 PM Xuneng Zhou <xunengzhou(at)gmail(dot)com> wrote:
>
> Hi,
>
> Thank you for the grammar review and the clear recommendation.
>
> On Wed, Oct 15, 2025 at 4:51 PM Álvaro Herrera <alvherre(at)kurilemu(dot)de> wrote:
> >
> > I didn't review the patch other than look at the grammar, but I disagree
> > with using opt_with in it. I think WITH should be a mandatory word, or
> > just not be there at all. The current formulation lets you do one of:
> >
> > 1. WAIT FOR LSN '123/456' WITH (opt = val);
> > 2. WAIT FOR LSN '123/456' (opt = val);
> > 3. WAIT FOR LSN '123/456';
> >
> > and I don't see why you need two ways to specify an option list.
>
> I agree with this as unnecessary choices are confusing.
>
> >
> > So one option is to remove opt_wait_with_clause and just use
> > opt_utility_option_list, which would remove the WITH keyword from there
> > (ie. only keep 2 and 3 from the above list). But I think that's worse:
> > just look at the REPACK grammar[1], where we have to have additional
> > productions for the optional parenthesized option list.
> >
> >
> >
> > So why not do just
> >
> > +opt_wait_with_clause:
> > + WITH '(' utility_option_list ')' { $$ = $3; }
> > + | /*EMPTY*/ { $$ = NIL; }
> > + ;
> >
> > which keeps options 1 and 3 of the list above.
>
> Your suggested approach of making WITH mandatory when options are
> present looks better.
> I've implemented the change as you recommended. Please see patch 3 in v16.
>
> >
> >
> >
> > Note: you don't need to worry about WITH_LA, because that's only going
> > to show up when the user writes WITH TIME or WITH ORDINALITY (see
> > parser.c), and that's a syntax error anyway.
> >
>
> Yeah, we require '(' immediately after WITH in our grammar, the
> lookahead mechanism will keep it as regular WITH, and any attempt to
> write "WITH TIME" or "WITH ORDINALITY" would be a syntax error anyway,
> which is expected.
>

The filename of patch 1 is incorrect due to coping. Just correct it.

Best,
Xuneng

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

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Michael Paquier 2025-10-16 07:26:48 Re: Improved TAP tests by replacing sub-optimal uses of ok() with better Test::More functions
Previous Message Xuneng Zhou 2025-10-16 07:07:21 Re: Fix an unnecessary cast calling elog in ExecHashJoinImpl