On 7/24/19 10:00 AM, Andrew Dunstan wrote: > On 7/23/19 2:12 AM, Peter Eisentraut wrote: >> On 2019-07-22 21:16, Andrew Dunstan wrote: >>> Modulo this issue, experimentation shows that adding '-A trust' to the >>> line in run_build.pl where initdb is called fixes the issue. If we're >>> going to rely on a buildfarm client fix that one seems simplest. >> Yes, that is the right fix. It's what the in-tree test drivers >> (pg_regress, PostgresNode.pm) do. >> > > I have done that, I will put out a new release probably right after the > CF closes. > > > I think we also need to change vcregress.pl to use trust explicitly for > upgrade checks, just like the Unix upgrade test script does. That should > help to future-proof us a bit. > >
Here's a patch along those lines that pretty much syncs up vcregress.pl's initdb with pg_upgrade's test.sh. cheers andrew -- Andrew Dunstan https://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl index 5495066b4d..05446c3f59 100644 --- a/src/tools/msvc/vcregress.pl +++ b/src/tools/msvc/vcregress.pl @@ -496,12 +496,28 @@ sub recoverycheck } # Run "initdb", then reconfigure authentication. +# mimics what is done in src/bin/pg_upgrade/test.sh:standard_initdb() sub standard_initdb { - return ( - system('initdb', '-N') == 0 and system( - "$topdir/$Config/pg_regress/pg_regress", '--config-auth', - $ENV{PGDATA}) == 0); + my @opts = qw(-N --wal-segsize 1 -g -A trust); + my $status = system('initdb',@opts); + if ($status == 0) + { + if (defined($ENV{TEMP_CONFIG}) && -r $ENV{TEMP_CONFIG}) + { + open(my $handle, '<', $ENV{TEMP_CONFIG}) + || die "file $ENV{TEMP_CONFIG} not found"; + my $contents = <$handle>; + close($handle); + open($handle, '>>', "$ENV{PGDATA}/postgresql.conf") + || die "file $ENV{PGDATA}/postgresql.conf not found"; + print $handle $contents; + close($handle); + } + $status = system("$topdir/$Config/pg_regress/pg_regress", + '--config-auth', $ENV{PGDATA}) + } + return $status; } # This is similar to appendShellString(). Perl system(@args) bypasses