Re: Implement waiting for wal lsn replay: reloaded
Xuneng Zhou <xunengzhou@gmail.com>
Commits
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Clean up 019_replslot_limit.pl comments
- 0b866bb90368 19 (unreleased) landed
-
Stabilize 019_replslot_limit.pl: wait on slot restart_lsn
- cdb1d1cf1de6 19 (unreleased) landed
-
Use WAIT FOR LSN in PostgreSQL::Test::Cluster::wait_for_catchup()
- 7e8aeb9e483d 19 (unreleased) landed
- f30848cb05d4 19 (unreleased) landed
-
Add tab completion for the WAIT FOR LSN MODE option
- 76948337f724 19 (unreleased) landed
-
Add the MODE option to the WAIT FOR LSN command
- 49a181b5d634 19 (unreleased) landed
-
Extend xlogwait infrastructure with write and flush wait types
- 7a39f43d885b 19 (unreleased) landed
-
Unify error messages
- 502e256f2262 19 (unreleased) cited
-
Optimize shared memory usage for WaitLSNProcInfo
- 75e82b2f5a6f 19 (unreleased) landed
-
Fix WaitLSNWakeup() fast-path check for InvalidXLogRecPtr
- ede6acef4967 19 (unreleased) landed
-
Fix incorrect function name in comments
- 23792d738158 19 (unreleased) landed
-
Add infrastructure for efficient LSN waiting
- 3b4e53a075ea 19 (unreleased) landed
-
Add pairingheap_initialize() for shared memory usage
- 8af3ae0d4b36 19 (unreleased) landed
-
Implement WAIT FOR command
- 447aae13b030 19 (unreleased) landed
Attachments
- v11-0001-Implement-WAIT-FOR-command.patch (application/octet-stream) patch v11-0001
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. Best, Xuneng