TAP: fix undefined var warnings in PostgresNode with timeout
Started by Craig Ringeralmost 9 years ago1 messages
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
Attachments:
undefined-psql-timeout-96.patchtext/x-patch; charset=US-ASCII; name=undefined-psql-timeout-96.patchDownload
From 2745f52455c4a0c187ec879f009aac8f7d0e2ce1 Mon Sep 17 00:00:00 2001
From: Craig Ringer <craig@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
undefined-psql-timeout-pg10.patchtext/x-patch; charset=US-ASCII; name=undefined-psql-timeout-pg10.patchDownload
From 80a2b93b4e3ab3ad132fdcbf68b027d4e1726539 Mon Sep 17 00:00:00 2001
From: Craig Ringer <craig@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