From 010626219cb977da08583a5bf8cc235bbc1bb3a9 Mon Sep 17 00:00:00 2001
From: Justin Pryzby <pryzbyj@telsasoft.com>
Date: Sat, 25 Jun 2022 01:07:56 -0500
Subject: [PATCH 2/2] WIP: old versions

---
 src/bin/pg_upgrade/t/002_pg_upgrade.pl   | 18 ++++++++++++------
 src/test/perl/PostgreSQL/Test/Cluster.pm |  8 ++++----
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/src/bin/pg_upgrade/t/002_pg_upgrade.pl b/src/bin/pg_upgrade/t/002_pg_upgrade.pl
index 4a79a9e13d9..0f6b7afd78e 100644
--- a/src/bin/pg_upgrade/t/002_pg_upgrade.pl
+++ b/src/bin/pg_upgrade/t/002_pg_upgrade.pl
@@ -63,8 +63,8 @@ sub filter_dump
 	return $dump_file_filtered;
 }
 
-# The test of pg_upgrade requires two clusters, an old one and a new one
-# that gets upgraded.  Before running the upgrade, a logical dump of the
+# The test of pg_upgrade requires two clusters, an old one and a new one.
+# Before running the upgrade, a logical dump of the
 # old cluster is taken, and a second logical dump of the new one is taken
 # after the upgrade.  The upgrade test passes if there are no differences
 # in these two dumps.
@@ -99,7 +99,7 @@ $node_params{extra} = [ '--wal-segsize', '1', '--allow-group-access' ]
 $oldnode->init(%node_params);
 $oldnode->start;
 
-# The default location of the source code is the root of this directory.
+# The location of the source code is the root of this directory.
 my $srcdir = abs_path("../../..");
 
 # Set up the data of the old instance with a dump or pg_regress.
@@ -165,6 +165,12 @@ else
 	is($rc, 0, 'regression tests pass');
 }
 
+# Initialize a new node for the upgrade.
+my $newnode = PostgreSQL::Test::Cluster->new('new_node');
+$newnode->init(xextra => [ '--wal-segsize', '1', '--allow-group-access' ]);
+my $newbindir = $newnode->config_data('--bindir');
+my $oldbindir = $oldnode->config_data('--bindir');
+
 # Before dumping, get rid of objects not existing or not supported in later
 # versions. This depends on the version of the old server used, and matters
 # only if different major versions are used for the dump.
@@ -172,11 +178,11 @@ if (defined($ENV{oldinstall}))
 {
 	# Note that upgrade_adapt.sql from the new version is used, to
 	# cope with an upgrade to this version.
-	$oldnode->command_ok(
+	$newnode->command_ok(
 		[
-			'psql', '-X',
+			"$newbindir/psql", '-X',
 			'-f', "$srcdir/src/bin/pg_upgrade/upgrade_adapt.sql",
-			'regression'
+			'-d', $oldnode->connstr('regression'),
 		],
 		'ran adapt script');
 }
diff --git a/src/test/perl/PostgreSQL/Test/Cluster.pm b/src/test/perl/PostgreSQL/Test/Cluster.pm
index c8c7bc5045a..45cc4d74779 100644
--- a/src/test/perl/PostgreSQL/Test/Cluster.pm
+++ b/src/test/perl/PostgreSQL/Test/Cluster.pm
@@ -476,7 +476,7 @@ sub init
 	mkdir $self->archive_dir;
 
 	PostgreSQL::Test::Utils::system_or_bail('initdb', '-D', $pgdata, '-A',
-		'trust', '-N', @{ $params{extra} });
+		'trust', @{ $params{extra} });
 	PostgreSQL::Test::Utils::system_or_bail($ENV{PG_REGRESS},
 		'--config-auth', $pgdata, @{ $params{auth_extra} });
 
@@ -486,8 +486,8 @@ sub init
 	print $conf "restart_after_crash = off\n";
 	print $conf "log_line_prefix = '%m [%p] %q%a '\n";
 	print $conf "log_statement = all\n";
-	print $conf "log_replication_commands = on\n";
-	print $conf "wal_retrieve_retry_interval = '500ms'\n";
+	#print $conf "log_replication_commands = on\n";
+	#print $conf "wal_retrieve_retry_interval = '500ms'\n";
 
 	# If a setting tends to affect whether tests pass or fail, print it after
 	# TEMP_CONFIG.  Otherwise, print it before TEMP_CONFIG, thereby permitting
@@ -827,7 +827,7 @@ sub start
 	# compatibility with older versions.
 	$ret = PostgreSQL::Test::Utils::system_log(
 		'pg_ctl', '-w',           '-D', $self->data_dir,
-		'-l',     $self->logfile, '-o', "--cluster-name=$name",
+		'-l',     $self->logfile, # '-o', "--cluster-name=$name",
 		'start');
 
 	if ($ret != 0)
-- 
2.17.1

