delimiter inconsistency in generate-wait_event_types.pl
Kyotaro Horiguchi <horikyota.ntt@gmail.com>
From: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
To: pgsql-hackers@lists.postgresql.org
Date: 2025-07-29T04:56:38Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Fix incorrect option name in usage screen
- e5393fc2e453 18.1 landed
- 2e84996b03f5 17.7 landed
- 0fba25eb720a 19 (unreleased) landed
-
Consistently handle tab delimiters for wait event names
- 711ccce38f22 19 (unreleased) landed
Attachments
Hello, I got bitten by an inconsistency introduced about two years ago. In the script generate-wait_event_types.pl, the intermediate line format is parsed using a regular expression that allows multiple tab characters between fields. However, the fields were later extracted using split(/\t/, ...), which assumes single-tab delimiters and fails when fields are separated by multiple tabs. This leads to a somewhat unclear error when processing input that should otherwise be valid (*1): > substr outside of string at ./generate-wait_event_types.pl line 243, > <$wait_event_names> line 434. Since the data was already captured via regex, using $1, $2 and $3 instead of split() avoids the inconsistency and makes the intent clearer. A related adjustment was made elsewhere in the script to improve consistency. This is addressed in the attached patch. regards. *1: diff --git a/src/backend/utils/activity/wait_event_names.txt b/src/backend/utils/activity/wait_event_names.txt index 0be307d2ca0..ba551938ed7 100644 --- a/src/backend/utils/activity/wait_event_names.txt +++ b/src/backend/utils/activity/wait_event_names.txt @@ -405,7 +405,7 @@ SerialSLRU "Waiting to access the serializable transaction conflict SLRU cache." SubtransSLRU "Waiting to access the sub-transaction SLRU cache." XactSLRU "Waiting to access the transaction status SLRU cache." ParallelVacuumDSA "Waiting for parallel vacuum dynamic shared memory allocation." -AioUringCompletion "Waiting for another process to complete IO via io_uring." +AioUringCompletion "Waiting for another process to complete IO via io_uring." # No "ABI_compatibility" region here as WaitEventLWLock has its own C code.