|
|
|
|
@ -405,4 +405,32 @@ psql_fails_like( |
|
|
|
|
qr/iteration count is specified more than once/, |
|
|
|
|
'\watch, iteration count is specified more than once'); |
|
|
|
|
|
|
|
|
|
# Test \g output piped into a program. |
|
|
|
|
# The program is perl -pe '' to simply copy the input to the output. |
|
|
|
|
my $g_file = "$tempdir/g_file_1.out"; |
|
|
|
|
my $perlbin = $^X; |
|
|
|
|
$perlbin =~ s!\\!/!g if $PostgreSQL::Test::Utils::windows_os; |
|
|
|
|
my $pipe_cmd = "$perlbin -pe '' >$g_file"; |
|
|
|
|
|
|
|
|
|
psql_like($node, "SELECT 'one' \\g | $pipe_cmd", qr//, "one command \\g"); |
|
|
|
|
my $c1 = slurp_file($g_file); |
|
|
|
|
like($c1, qr/one/); |
|
|
|
|
|
|
|
|
|
psql_like($node, "SELECT 'two' \\; SELECT 'three' \\g | $pipe_cmd", qr//, "two commands \\g"); |
|
|
|
|
my $c2 = slurp_file($g_file); |
|
|
|
|
like($c2, qr/two.*three/s); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
psql_like($node, "\\set SHOW_ALL_RESULTS 0\nSELECT 'four' \\; SELECT 'five' \\g | $pipe_cmd", qr//, |
|
|
|
|
"two commands \\g with only last result"); |
|
|
|
|
my $c3 = slurp_file($g_file); |
|
|
|
|
like($c3, qr/five/); |
|
|
|
|
unlike($c3, qr/four/); |
|
|
|
|
|
|
|
|
|
psql_like($node, "copy (values ('foo'),('bar')) to stdout \\g | $pipe_cmd", |
|
|
|
|
qr//, |
|
|
|
|
"copy output passed to \\g pipe"); |
|
|
|
|
my $c4 = slurp_file($g_file); |
|
|
|
|
like($c4, qr/foo.*bar/s); |
|
|
|
|
|
|
|
|
|
done_testing(); |
|
|
|
|
|