If PostgresNode::psql (from the TAP framework) is called with a timeout set and a timed_out reference, it will attempt to do bitwise AND and bitshifts on the $ret value from IPC::Run, which is undef if the command timed out.
This produces annoying errors in the logs. Fix attached. Should be applied to 9.6 and pg 10. -- Craig Ringer http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
From 2745f52455c4a0c187ec879f009aac8f7d0e2ce1 Mon Sep 17 00:00:00 2001 From: Craig Ringer <cr...@2ndquadrant.com> Date: Wed, 12 Apr 2017 20:04:34 +0800 Subject: [PATCH] Fix undefined var warnings in PostgresNode.pm with timeout --- src/test/perl/PostgresNode.pm | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/test/perl/PostgresNode.pm b/src/test/perl/PostgresNode.pm index bd627b2..84515ad 100644 --- a/src/test/perl/PostgresNode.pm +++ b/src/test/perl/PostgresNode.pm @@ -1151,22 +1151,25 @@ sub psql # We don't use IPC::Run::Simple to limit dependencies. # # We always die on signal. - my $core = $ret & 128 ? " (core dumped)" : ""; - die "psql exited with signal " - . ($ret & 127) - . "$core: '$$stderr' while running '@psql_params'" - if $ret & 127; - $ret = $ret >> 8; + if (defined($ret)) + { + my $core = $ret & 128 ? " (core dumped)" : ""; + die "psql exited with signal " + . ($ret & 127) + . "$core: '$$stderr' while running '@psql_params'" + if $ret & 127; + $ret = $ret >> 8; - if ($ret && $params{on_error_die}) - { - die "psql error: stderr: '$$stderr'\nwhile running '@psql_params'" - if $ret == 1; - die "connection error: '$$stderr'\nwhile running '@psql_params'" - if $ret == 2; - die "error running SQL: '$$stderr'\nwhile running '@psql_params'" - if $ret == 3; - die "psql returns $ret: '$$stderr'\nwhile running '@psql_params'"; + if ($ret && $params{on_error_die}) + { + die "psql error: stderr: '$$stderr'\nwhile running '@psql_params'" + if $ret == 1; + die "connection error: '$$stderr'\nwhile running '@psql_params'" + if $ret == 2; + die "error running SQL: '$$stderr'\nwhile running '@psql_params'" + if $ret == 3; + die "psql returns $ret: '$$stderr'\nwhile running '@psql_params'"; + } } if (wantarray) -- 2.5.5
From 80a2b93b4e3ab3ad132fdcbf68b027d4e1726539 Mon Sep 17 00:00:00 2001 From: Craig Ringer <cr...@2ndquadrant.com> Date: Wed, 12 Apr 2017 20:08:54 +0800 Subject: [PATCH] Fix undefined var warnings in PostgresNode.pm with timeout --- src/test/perl/PostgresNode.pm | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/test/perl/PostgresNode.pm b/src/test/perl/PostgresNode.pm index 0eacd41..5bb4f40 100644 --- a/src/test/perl/PostgresNode.pm +++ b/src/test/perl/PostgresNode.pm @@ -1217,22 +1217,25 @@ sub psql # We don't use IPC::Run::Simple to limit dependencies. # # We always die on signal. - my $core = $ret & 128 ? " (core dumped)" : ""; - die "psql exited with signal " - . ($ret & 127) - . "$core: '$$stderr' while running '@psql_params'" - if $ret & 127; - $ret = $ret >> 8; - - if ($ret && $params{on_error_die}) + if (defined($ret)) { - die "psql error: stderr: '$$stderr'\nwhile running '@psql_params'" - if $ret == 1; - die "connection error: '$$stderr'\nwhile running '@psql_params'" - if $ret == 2; - die "error running SQL: '$$stderr'\nwhile running '@psql_params' with sql '$sql'" - if $ret == 3; - die "psql returns $ret: '$$stderr'\nwhile running '@psql_params'"; + my $core = $ret & 128 ? " (core dumped)" : ""; + die "psql exited with signal " + . ($ret & 127) + . "$core: '$$stderr' while running '@psql_params'" + if $ret & 127; + $ret = $ret >> 8; + + if ($ret && $params{on_error_die}) + { + die "psql error: stderr: '$$stderr'\nwhile running '@psql_params'" + if $ret == 1; + die "connection error: '$$stderr'\nwhile running '@psql_params'" + if $ret == 2; + die "error running SQL: '$$stderr'\nwhile running '@psql_params' with sql '$sql'" + if $ret == 3; + die "psql returns $ret: '$$stderr'\nwhile running '@psql_params'"; + } } if (wantarray) -- 2.5.5
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers