|
|
|
@ -25,14 +25,21 @@ SKIP: { |
|
|
|
|
|
|
|
|
|
local %ENV = $node->_get_env(); |
|
|
|
|
|
|
|
|
|
my ($stdin, $stdout, $stderr); |
|
|
|
|
|
|
|
|
|
# Test whether shell supports $PPID. It's part of POSIX, but some |
|
|
|
|
# pre-/non-POSIX shells don't support it (e.g., NetBSD, Solaris). |
|
|
|
|
$stdin = "\\! echo \$PPID"; |
|
|
|
|
IPC::Run::run(['psql', '-X', '-v', 'ON_ERROR_STOP=1'], '<', \$stdin, '>', \$stdout, '2>', \$stderr); |
|
|
|
|
$stdout =~ /^\d+$/ or skip "shell apparently does not support \$PPID", 2; |
|
|
|
|
|
|
|
|
|
local $SIG{ALRM} = sub { |
|
|
|
|
my $psql_pid = TestLib::slurp_file("$tempdir/psql.pid"); |
|
|
|
|
kill 'INT', $psql_pid; |
|
|
|
|
}; |
|
|
|
|
alarm 1; |
|
|
|
|
|
|
|
|
|
my $stdin = "\\! echo \$PPID >$tempdir/psql.pid\nselect pg_sleep(3);"; |
|
|
|
|
my ($stdout, $stderr); |
|
|
|
|
$stdin = "\\! echo \$PPID >$tempdir/psql.pid\nselect pg_sleep(3);"; |
|
|
|
|
my $result = IPC::Run::run(['psql', '-X', '-v', 'ON_ERROR_STOP=1'], '<', \$stdin, '>', \$stdout, '2>', \$stderr); |
|
|
|
|
|
|
|
|
|
ok(!$result, 'query failed as expected'); |
|
|
|
|