Re: Autogenerate some wait events code and documentation

From: "Drouvot, Bertrand" <bertranddrouvot(dot)pg(at)gmail(dot)com>
To: Michael Paquier <michael(at)paquier(dot)xyz>, Andres Freund <andres(at)anarazel(dot)de>
Cc: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: Autogenerate some wait events code and documentation
Date: 2023-07-09 07:15:34
Message-ID: 1f74adab-5ed8-450a-853a-f0b4bfe0e751@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

On 7/9/23 6:32 AM, Michael Paquier wrote:
> On Fri, Jul 07, 2023 at 01:49:24PM +0900, Michael Paquier wrote:
>> Hmm. If we go down this road I would make the choice of simplicity
>> and remove entirely a column, then, generating the snakecase from the
>> camelcase or vice-versa (say like a $string =~ s/([a-z]+)/$1_/g;),
>> even if it means having slightly incompatible strings showing to the
>> users. And I'd rather minimize the number of exceptions we need to
>> handle in this automation (aka no exception rules for some keywords
>> like "SSL" or "WAL", etc.).
>
> After pondering more about that, the attached patch set does exactly
> that.

Thanks!

> Patch 0001 includes an update of the wait event names so as
> these are more consistent with the enum elements generated. With this
> change, users can apply lower() or upper() across monitoring queries
> and still get the same results as before. An exception was the
> message queue events, which the enums used "MQ" but the event names
> used "MessageQueue", but this concerns only four lines of code in the
> backend. The newly-generated enum elements match with the existing
> ones, except for MQ.

>
> Patch 0002 introduces a set of simplifications for the format of
> wait_event_names.txt:
> - Removal of the first column for the enums.
> - Removal of the quotes for the event name. We have a single keyword
> for these, so that's kind of annoying to cope with that for new
> entries.
> - Build of the enum elements using the event names, by applying a
> rebuild as simple as that:
> + $waiteventenumname =~ s/([a-z])([A-Z])/$1_$2/g;
> + $waiteventenumname = uc($waiteventenumname);
>
> Thoughts?

That's great and it does simplify the wait_event_names.txt format (and the
impact on "MQ" does not seem like a big deal).

I also noticed that you now provide the culprit line in case of parsing
failure (thanks for that).

#
-# "C symbol in enums" "format in the system views" "description in the docs"
+# "format in the system views" "description in the docs"

Should we add a note here about the impact of the "format in the system views" on
the auto generated enum? (aka how it is generated based on its format)?

Regards,

--
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Eisentraut 2023-07-09 07:23:24 Re: Fix last unitialized memory warning
Previous Message Gurjeet Singh 2023-07-09 07:01:03 Re: BUG #18016: REINDEX TABLE failure