[PATCH] Using named captures in Catalog::ParseHeader()

Started by Dagfinn Ilmari Mannsåkeralmost 3 years ago7 messageshackers
Jump to latest

Hi Hackers,

Peter's patch set for autogenerating syscache info
(/messages/by-id/75ae5875-3abc-dafc-8aec-73247ed41cde@eisentraut.org)
touched on one of my least favourite parts of Catalog.pm: the
parenthesis-counting nightmare that is the parsing of catalog header
directives.

However, now that we require Perl 5.14, we can use the named capture
feature (introduced in Perl 5.10) to make that a lot clearer, as in the
attached patch.

While I was rewriting the regexes I noticed that they were inconsistent
about whether they accepted whitespace in the parameter lists, so I took
the liberty to make them consistently allow whitespace after the opening
paren and the commas, which is what most of them already did.

I've verified that the generated postgres.bki is identical to before,
and all tests pass.

- ilmari

Attachments:

0001-Use-named-captures-in-Catalog-ParseHeader.patchtext/x-diffDownload+55-41
#2John Naylor
john.naylor@enterprisedb.com
In reply to: Dagfinn Ilmari Mannsåker (#1)
Re: [PATCH] Using named captures in Catalog::ParseHeader()

On Thu, Jun 1, 2023 at 7:12 PM Dagfinn Ilmari Mannsåker <ilmari@ilmari.org>
wrote:

Hi Hackers,

Peter's patch set for autogenerating syscache info
(/messages/by-id/75ae5875-3abc-dafc-8aec-73247ed41cde@eisentraut.org

)

touched on one of my least favourite parts of Catalog.pm: the
parenthesis-counting nightmare that is the parsing of catalog header
directives.

However, now that we require Perl 5.14, we can use the named capture
feature (introduced in Perl 5.10) to make that a lot clearer, as in the
attached patch.

While I was rewriting the regexes I noticed that they were inconsistent
about whether they accepted whitespace in the parameter lists, so I took
the liberty to make them consistently allow whitespace after the opening
paren and the commas, which is what most of them already did.

LGTM

--
John Naylor
EDB: http://www.enterprisedb.com

In reply to: Dagfinn Ilmari Mannsåker (#1)
Re: [PATCH] Using named captures in Catalog::ParseHeader()

Dagfinn Ilmari Mannsåker <ilmari@ilmari.org> writes:

However, now that we require Perl 5.14, we can use the named capture
feature (introduced in Perl 5.10) to make that a lot clearer, as in the
attached patch.

Added to the open commitfest: https://commitfest.postgresql.org/43/4361/

- ilmari

#4Michael Paquier
michael@paquier.xyz
In reply to: Dagfinn Ilmari Mannsåker (#1)
Re: [PATCH] Using named captures in Catalog::ParseHeader()

On Thu, Jun 01, 2023 at 01:12:22PM +0100, Dagfinn Ilmari Mannsåker wrote:

While I was rewriting the regexes I noticed that they were inconsistent
about whether they accepted whitespace in the parameter lists, so I took
the liberty to make them consistently allow whitespace after the opening
paren and the commas, which is what most of them already did.

That's the business with \s* in CATALOG. Is that right? Indeed,
that's more consistent.

I've verified that the generated postgres.bki is identical to before,
and all tests pass.

I find that pretty cool. Nice. Patch looks OK from here.
--
Michael

In reply to: Michael Paquier (#4)
Re: [PATCH] Using named captures in Catalog::ParseHeader()

Michael Paquier <michael@paquier.xyz> writes:

On Thu, Jun 01, 2023 at 01:12:22PM +0100, Dagfinn Ilmari Mannsåker wrote:

While I was rewriting the regexes I noticed that they were inconsistent
about whether they accepted whitespace in the parameter lists, so I took
the liberty to make them consistently allow whitespace after the opening
paren and the commas, which is what most of them already did.

That's the business with \s* in CATALOG. Is that right? Indeed,
that's more consistent.

Yes, \s* means "zero or more whitespace characters".

I've verified that the generated postgres.bki is identical to before,
and all tests pass.

I find that pretty cool. Nice. Patch looks OK from here.

Thanks for the review!

- ilmari

#6Michael Paquier
michael@paquier.xyz
In reply to: Dagfinn Ilmari Mannsåker (#5)
Re: [PATCH] Using named captures in Catalog::ParseHeader()

On Wed, Jun 14, 2023 at 10:30:23AM +0100, Dagfinn Ilmari Mannsåker wrote:

Thanks for the review!

v17 is now open, so applied this one.
--
Michael

In reply to: Michael Paquier (#6)
Re: [PATCH] Using named captures in Catalog::ParseHeader()

Michael Paquier <michael@paquier.xyz> writes:

On Wed, Jun 14, 2023 at 10:30:23AM +0100, Dagfinn Ilmari Mannsåker wrote:

Thanks for the review!

v17 is now open, so applied this one.

Thanks for committing!

- ilmari