Re: What about Perl autodie?

From: Peter Eisentraut <peter(at)eisentraut(dot)org>
To: PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Daniel Gustafsson <daniel(at)yesql(dot)se>, John Naylor <johncnaylorls(at)gmail(dot)com>, Greg Sabino Mullane <htamfids(at)gmail(dot)com>
Subject: Re: What about Perl autodie?
Date: 2024-02-21 07:26:36
Message-ID: 17eebac5-446f-40ef-8da0-b95e7056ce1f@eisentraut.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 14.02.24 17:52, Peter Eisentraut wrote:
> A gentler way might be to start using some perlcritic policies like
> InputOutput::RequireCheckedOpen or the more general
> InputOutput::RequireCheckedSyscalls and add explicit error checking at
> the sites it points out.

Here is a start for that. I added the required stanza to perlcriticrc
and started with an explicit list of functions to check:

functions = chmod flock open read rename seek symlink system

and fixed all the issues it pointed out.

I picked those functions because most existing code already checked
those, so the omissions are probably unintended, or in some cases also
because I thought it would be important for test correctness (e.g., some
tests using chmod).

I didn't design any beautiful error messages, mostly just used "or die
$!", which mostly matches existing code, and also this is
developer-level code, so having the system error plus source code
reference should be ok.

In the second patch, I changed the perlcriticrc stanza to use an
exclusion list instead of an explicit inclusion list. That way, you can
see what we are currently *not* checking. I'm undecided which way
around is better, and exactly what functions we should be checking. (Of
course, in principle, all of them, but since this is test and build
support code, not production code, there are probably some reasonable
compromises to be made.)

Attachment Content-Type Size
v1-0001-perlcritic-InputOutput-RequireCheckedSyscalls.patch text/plain 14.2 KB
v1-0002-Write-perlcritic-InputOutput-RequireCheckedSyscal.patch text/plain 856 bytes

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Richard Guo 2024-02-21 07:26:57 Re: Removing unneeded self joins
Previous Message Bharath Rupireddy 2024-02-21 07:20:00 Re: Add lookup table for replication slot invalidation causes