Re: Autogenerate some wait events code and documentation

Bertrand Drouvot <bertranddrouvot.pg@gmail.com>

From: "Drouvot, Bertrand" <bertranddrouvot.pg@gmail.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2023-07-04T10:04:50Z
Lists: pgsql-hackers

Attachments

Hi,

On 7/4/23 9:34 AM, Drouvot, Bertrand wrote:
> Hi,
> 
> On 7/3/23 9:11 AM, Michael Paquier wrote:
>> On Mon, Jul 03, 2023 at 03:57:42PM +0900, Michael Paquier wrote:
> 
> Thanks for looking at it and having fixed the issues that were present in
> v10.
> 
>>> I think that we should add some options to the perl script to be more
>>> selective with the files generated.  How about having two options
>>> called --docs and --code to select one or the other, then limit what
>>> gets generated in each path?  I guess that it would be cleaner if we
>>> error in the case where both options are defined, and just use some
>>> gotos to redirect to each foreach loop to limit extra indentations in
>>> the script.  This would avoid the need to remove the C and H files
>>> from the docs, additionally, which is what the Makefile in doc/ does.
>>>
>>> I have fixed all the issues I've found in v11 attached, except for the
>>> last one (I have added the OUTDIR trick for reference, but that's
>>> incorrect and incomplete).  Could you look at this part?
>>
>> Ah.  It took me a few extra minutes, but I think that we should set
>> "capture" to "false", no?  It looks like meson is getting confused,
>> expecting something in stdout but the new script generates a few
>> files, and does not output anything.  That's different from the other
>> doc-related perl scripts.
>> -- 
> 
> Yeah, with "capture" set to "false" then ninja alldocs does not error out
> and wait_event_types.sgml gets generated.
> 
> I'll look at the extra options --code and --docs.

Please find attached v12 that:

- sets "capture" to "false"
- adds the --code and --docs extra options to generate-wait_event_types.pl
- makes sure at least one of those option is provided
- makes sure that both options can't be provided simultaneously
- update the related Makefile/meson.build files accordingly
- fix a bug in generate-wait_event_types.pl (die on rename($stmp...) was not
using the right file (it was using ctmp). That was not visible before the docs/code
split.

Not related to this patch but I noticed that when building with meson some c files
are duplicated a the end of the build.

Indeed, they also appear in some include directories:

./meson_build/src/include/storage/lwlocknames.c
./meson_build/src/include/utils/pgstat_wait_event.c
./meson_build/src/include/utils/fmgrtab.c
./meson_build/src/include/nodes/queryjumblefuncs.funcs.c
./meson_build/src/include/nodes/readfuncs.switch.c
./meson_build/src/include/nodes/readfuncs.funcs.c
./meson_build/src/include/nodes/copyfuncs.switch.c
./meson_build/src/include/nodes/equalfuncs.funcs.c
./meson_build/src/include/nodes/outfuncs.switch.c
./meson_build/src/include/nodes/queryjumblefuncs.switch.c
./meson_build/src/include/nodes/copyfuncs.funcs.c
./meson_build/src/include/nodes/equalfuncs.switch.c
./meson_build/src/include/nodes/outfuncs.funcs.c

Is it expected? If not, I guess it's worth another patch.

Regards,

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

Commits

  1. Add "ABI_compatibility" regions to wait_event_names.txt

  2. Remove column for wait event names in wait_event_names.txt

  3. Use more consistent names for wait event objects and types

  4. Add information about line contents on parsing failure of wait_event_names.txt

  5. Remove double quotes from the second column of wait_event_names.txt

  6. Generate automatically code and documentation related to wait events

  7. Refactor some code related to wait events "BufferPin" and "Extension"

  8. doc: Fix ordering of entries in wait event table for I/O type