delimiter inconsistency in generate-wait_event_types.pl

From: Kyotaro Horiguchi <horikyota(dot)ntt(at)gmail(dot)com>
To: pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: delimiter inconsistency in generate-wait_event_types.pl
Date: 2025-07-29 04:56:38
Message-ID: 20250729.135638.1148639539103758555.horikyota.ntt@gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

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.

Attachment Content-Type Size
v1-0001-Make-tab-delimiter-handling-consistent-in-generat.patch text/x-patch 1.8 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2025-07-29 04:57:28 Re: A performance regression issue with Memoize
Previous Message vignesh C 2025-07-29 04:44:23 Re: POC: enable logical decoding when wal_level = 'replica' without a server restart