Re: Implement waiting for wal lsn replay: reloaded

From: Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>
To: Xuneng Zhou <xunengzhou(at)gmail(dot)com>
Cc: Álvaro Herrera <alvherre(at)kurilemu(dot)de>, Alexander Korotkov <aekorotkov(at)gmail(dot)com>, 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-12-16 05:48:37
Message-ID: 2D1099A6-C823-4560-9968-D946378FF5D2@gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> On Oct 4, 2025, at 09:35, 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.
>
> Best,
> Xuneng
> <v12-0001-Implement-WAIT-FOR-command.patch>

I just tried to review v12 but failed to “git am”. Can you please rebase the change?

Best regards,
--
Chao Li (Evan)
HighGo Software Co., Ltd.
https://www.highgo.com/

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Shixin Wang 2025-12-16 05:55:32 Fix memory leak in tzparser.c
Previous Message vignesh C 2025-12-16 05:41:48 Re: Proposal: Conflict log history table for Logical Replication