On Mon, 2024-03-04 at 18:10 +0000, Tom Lane wrote: > Further further fix pg_upgrade crossversion test for adminpack.
Ever since this commit the cross-version upgrade test is failing (for me, at least) with: # Running: psql -X -v ON_ERROR_STOP=1 -c drop database if exists contrib_regression_adminpack; drop database if exists regression_adminpack -d port=53977 host=/tmp/EK6UT_TufI dbname='postgres' ERROR: DROP DATABASE cannot run inside a transaction block It looks like when you added another command, the two were joined with ";\n", which ends up running the commands in a transaction block, which doesn't work for DROP DATABASE. I'm not sure how this test is succeeding for others, so perhaps I'm doing something wrong? Patch attached, though I'm not particularly great with perl and the array flattening in my implementation might be too magical. Regards, Jeff Davis
From 54e13ddb01b859606ebe938a98587aef666df668 Mon Sep 17 00:00:00 2001 From: Jeff Davis <j...@j-davis.com> Date: Fri, 8 Mar 2024 23:37:16 -0800 Subject: [PATCH] Fix cross-version pg_upgrade test. --- src/bin/pg_upgrade/t/002_pg_upgrade.pl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/bin/pg_upgrade/t/002_pg_upgrade.pl b/src/bin/pg_upgrade/t/002_pg_upgrade.pl index d951ed3af0..16b42d475f 100644 --- a/src/bin/pg_upgrade/t/002_pg_upgrade.pl +++ b/src/bin/pg_upgrade/t/002_pg_upgrade.pl @@ -246,15 +246,19 @@ if (defined($ENV{oldinstall})) foreach my $updb (keys %$adjust_cmds) { - my $upcmds = join(";\n", @{ $adjust_cmds->{$updb} }); + my @command_args = (); + for my $upcmd (@{ $adjust_cmds->{$updb} }) + { + push @command_args, '-c', $upcmd; + } # For simplicity, use the newer version's psql to issue the commands. $newnode->command_ok( [ 'psql', '-X', '-v', 'ON_ERROR_STOP=1', - '-c', $upcmds, '-d', $oldnode->connstr($updb), + @command_args, ], "ran version adaptation commands for database $updb"); } -- 2.34.1