Re: Make ON_ERROR_STOP stop on shell script failure - Mailing list pgsql-hackers

From Fujii Masao
Subject Re: Make ON_ERROR_STOP stop on shell script failure
Date
Msg-id 3f489f1f-3f91-8a98-4cf3-bad7ff037dc2@oss.nttdata.com
Whole thread Raw
In response to Re: Make ON_ERROR_STOP stop on shell script failure  (bt22nakamorit <bt22nakamorit@oss.nttdata.com>)
Responses Re: Make ON_ERROR_STOP stop on shell script failure  (bt22nakamorit <bt22nakamorit@oss.nttdata.com>)
List pgsql-hackers

On 2022/09/30 16:54, bt22nakamorit wrote:
> 2022-09-21 11:45 に Fujii Masao wrote:
>> We can execute the shell commands via psql in various ways
>> other than \! meta-command. For example,
>>
>> * `command`
>> * \g | command
>> * \gx | command
>> * \o | command
>> * \w | command
>> * \copy ... program 'command'
>>
>> ON_ERROR_STOP should handle not only \! but also all the above in the same way?
>>
>>
>> One concern about this patch is that some applications already depend on
>> the current behavior of ON_ERROR_STOP, i.e., psql doesn't stop even when
>> the shell command returns non-zero exit code. If so, we might need to
>> extend ON_ERROR_STOP so that it accepts the following setting values.
>>
>> * off - don't stop even when either sql or shell fails (same as the
>> current behavior)
>> * on or sql - stop only whensql fails (same as the current behavior)
>> * shell - stop only when shell fails
>> * all - stop when either sql or shell fails
>>
>> Thought?
>>
>> Regards,
> 
> I agree that some applications may depend on the behavior of previous ON_ERROR_STOP.
> I created a patch that implements off, on, shell, and all option for ON_ERROR_STOP.
> I also edited the code for \g, \o, \w, and \set in addition to \! to return exit status of shell commands for
ON_ERROR_STOP.
> 
> There were discussions regarding the error messages for when shell command fails.
> I have found that \copy already handles exit status of shell commands when it executes one, so I copied the messages
fromthere.
 
> More specifically, I referred to """bool do_copy(const char *args)""" in src/bin/psql/copy.c
> 
> Any feedback would be very much appreciated.

Thanks for updating the patch!

The patch failed to be applied into the master cleanly. Could you rebase it?

patching file src/bin/psql/common.c
Hunk #1 succeeded at 94 (offset 4 lines).
Hunk #2 succeeded at 104 (offset 4 lines).
Hunk #3 succeeded at 133 (offset 4 lines).
Hunk #4 succeeded at 1869 with fuzz 1 (offset 1162 lines).
Hunk #5 FAILED at 2624.
1 out of 5 hunks FAILED -- saving rejects to file src/bin/psql/common.c.rej

Regards,

-- 
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION



pgsql-hackers by date:

Previous
From: Masahiko Sawada
Date:
Subject: Re: [PoC] Improve dead tuple storage for lazy vacuum
Next
From: Amit Langote
Date:
Subject: Re: Eliminating SPI from RI triggers - take 2