Hi, On Wed, Oct 15, 2025 at 8:23 AM Xuneng Zhou <[email protected]> wrote: > > Hi, > > On Tue, Oct 14, 2025 at 9:03 PM Xuneng Zhou <[email protected]> wrote: > > > > Hi, > > > > On Sat, Oct 4, 2025 at 9:35 AM Xuneng Zhou <[email protected]> wrote: > > > > > > Hi, > > > > > > On Sun, Sep 28, 2025 at 5:02 PM Xuneng Zhou <[email protected]> wrote: > > > > > > > > Hi, > > > > > > > > On Fri, Sep 26, 2025 at 7:22 PM Xuneng Zhou <[email protected]> > > > > wrote: > > > > > > > > > > Hi Álvaro, > > > > > > > > > > Thanks for your review. > > > > > > > > > > On Tue, Sep 16, 2025 at 4:24 AM Álvaro Herrera <[email protected]> > > > > > 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
v15-0001-Add-pairingheap_initialize-for-shared-memory-usag copy.patch
Description: Binary data
v15-0002-Add-infrastructure-for-efficient-LSN-waiting.patch
Description: Binary data
v15-0003-Implement-WAIT-FOR-command.patch
Description: Binary data
