Fix an issue in PostgreSQL::Test::Cluster:psql()

Due to the commit c5385929 which made all Perl warnings to fatal, use
of PostgreSQL::Test::Cluster:psql() and safe_psql() with timeout
started to fail with the following error:

Use of uninitialized value $ret in bitwise and (&) at
..src/test/perl/PostgreSQL/Test/Cluster.pm line 2015.

Fix that by placing $ret conversion code in psql() in an if (defined
$ret) block.

With this change, the behavior of psql() becomes same as before, that
is, the whole function returns undef on timeout, which is usefully
different from returning 0.

Author: Bharath Rupireddy <bharath.rupireddyforpostgres@gmail.com>
Discussion: https://www.postgresql.org/message-id/flat/06f899fd-1826-05ab-42d6-adeb1fd5e200%40eisentraut.org
pull/152/head
Peter Eisentraut 1 year ago
parent 0ae3b46621
commit 686db12de3
  1. 3
      src/test/perl/PostgreSQL/Test/Cluster.pm

@ -2012,12 +2012,15 @@ sub psql
# We don't use IPC::Run::Simple to limit dependencies. # We don't use IPC::Run::Simple to limit dependencies.
# #
# We always die on signal. # We always die on signal.
if (defined $ret)
{
my $core = $ret & 128 ? " (core dumped)" : ""; my $core = $ret & 128 ? " (core dumped)" : "";
die "psql exited with signal " die "psql exited with signal "
. ($ret & 127) . ($ret & 127)
. "$core: '$$stderr' while running '@psql_params'" . "$core: '$$stderr' while running '@psql_params'"
if $ret & 127; if $ret & 127;
$ret = $ret >> 8; $ret = $ret >> 8;
}
if ($ret && $params{on_error_die}) if ($ret && $params{on_error_die})
{ {

Loading…
Cancel
Save