Re: Check return value of pclose() correctly - Mailing list pgsql-hackers

From Peter Eisentraut
Subject Re: Check return value of pclose() correctly
Date
Msg-id d599afd7-71df-604c-7307-cd8febadef48@enterprisedb.com
Whole thread Raw
In response to Re: Check return value of pclose() correctly  (Peter Eisentraut <peter.eisentraut@enterprisedb.com>)
List pgsql-hackers
On 01.11.22 21:30, Peter Eisentraut wrote:
>>> There are some places where the return value is apparently intentionally
>>> ignored, such as in error recovery paths, or psql ignoring a failure to
>>> launch the pager.  (The intention can usually be inferred by the kind of
>>> error checking attached to the corresponding popen() call.)  But 
>>> there are a
>>> few places in psql that I'm suspicious about that I have marked, but 
>>> need to
>>> think about further.
>>
>> Hmm.  I would leave these out, I think.  setQFout() relies on the
>> result of openQueryOutputFile().  And this could make commands like
>> \watch less reliable.
> 
> I don't quite understand what you are saying here.  My point is that, 
> for example, setQFout() thinks it's important to check the result of 
> popen() and write an error message, but it doesn't check the result of 
> pclose() at all.  I don't think that makes sense in practice.

I have looked this over again.  In these cases, if the piped-to command 
is faulty, you get a "broken pipe" error anyway, so the effect of not 
checking the pclose() result is negligible.  So I have removed the 
"FIXME" markers without further action.

There is also the question whether we want to check the exit status of a 
user-supplied command, such as in pgbench's \setshell.  I have dialed 
back my patch there, since I don't know what the current practice in 
pgbench scripts is.  If the command fails badly, pgbench will probably 
complain anyway about invalid output.

More important is that something like pg_upgrade does check the exit 
status when it calls pg_controldata etc.  That's what this patch 
accomplishes.

Attachment

pgsql-hackers by date:

Previous
From: Amul Sul
Date:
Subject: Re: Tables not getting vacuumed in postgres
Next
From: "Karthik Jagadish (kjagadis)"
Date:
Subject: Re: Tables not getting vacuumed in postgres