Hello

While reviewing a patch, I noticed a typo in guc_params.dat. The code
compiled and seemingly worked, and I was very surprised that the
generator script didn't catch the mistake.

I looked into it, and I found several missing checks in
gen_guc_tables. I attached fixes for 4 that I think would definitely
improve the script (for now as separate patches, so it is easy to
select only some of them):

* 0001 fixes the issue that started this, it validates the allowed
field names, preventing typos in their names
* 0002 goes a step further and validates that fields specific to some
types can only appear for those types
* 0003 just improves the error reported by duplicate names, previously
this was confusing (it referred to incorrect ordering)
* 0004 adds basic checks about allowed characters in GUC names

I was also thinking about adding validations for the enum/define
values (config group, flags, guc context), but that requires a
somewhat fragile extraction code, and I decided to leave that out for
now.

What do you think about these changes?

Attachment: 0001-gen_guc_tables-reject-unrecognized-field-names-in-gu.patch
Description: Binary data

Attachment: 0002-gen_guc_tables-reject-type-inappropriate-fields-in-g.patch
Description: Binary data

Attachment: 0003-gen_guc_tables-report-duplicate-entry-names-distinct.patch
Description: Binary data

Attachment: 0004-gen_guc_tables-validate-GUC-name-format.patch
Description: Binary data

Reply via email to