Skip to content

Commit b5bd135

Browse files
committed
In PostgresNode.pm, don't pass SQL to psql on the command line
The Msys shell mangles certain patterns in its command line, so avoid handing arbitrary SQL to psql on the command line and instead use IPC::Run's redirection facility for stdin. This pattern is already mostly whats used, but query_poll_until() was not doing the right thing. Problem discovered on the buildfarm when a new TAP test failed on msys.
1 parent dbc9dbb commit b5bd135

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

src/test/perl/PostgresNode.pm

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1495,14 +1495,15 @@ sub poll_query_until
14951495

14961496
$expected = 't' unless defined($expected); # default value
14971497

1498-
my $cmd = [ 'psql', '-XAt', '-c', $query, '-d', $self->connstr($dbname) ];
1498+
my $cmd = [ 'psql', '-XAt', '-d', $self->connstr($dbname) ];
14991499
my ($stdout, $stderr);
15001500
my $max_attempts = 180 * 10;
15011501
my $attempts = 0;
15021502

15031503
while ($attempts < $max_attempts)
15041504
{
1505-
my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr;
1505+
my $result = IPC::Run::run $cmd, '<', \$query,
1506+
'>', \$stdout, '2>', \$stderr;
15061507

15071508
$stdout =~ s/\r\n/\n/g if $Config{osname} eq 'msys';
15081509
chomp($stdout);

0 commit comments

Comments
 (0)