Fix pg_upgrade's cross-version tests when old < 18
authorÁlvaro Herrera <[email protected]>
Wed, 13 Nov 2024 10:06:44 +0000 (11:06 +0100)
committerÁlvaro Herrera <[email protected]>
Wed, 13 Nov 2024 10:06:44 +0000 (11:06 +0100)
Because in the 18 cycle we turned checksums on by default with commit
04bec894a04c, and pg_upgrade fails if the setting doesn't match in old
and new clusters, the built-in cross-version pg_upgrade test is failing
if the old version is older than 18.  Fix the script so that it creates
the old cluster with checksums enabled (-k) in cross-version scenarios.

This went unnoticed because the buildfarm doesn't use the same test code
for cross-version testing.

Reviewed-by: Peter Eisentraut <[email protected]>
Discussion: https://postgr.es/m/202411071838[email protected]

src/bin/pg_upgrade/t/002_pg_upgrade.pl

index 9b51f9e666a09c1dad07ad6aafd5d1fb4df78530..3b9cb21cbd5be9d939fef5645abfe90694bdda95 100644 (file)
@@ -180,6 +180,10 @@ if ($oldnode->pg_version >= 15)
    }
 }
 
+# Since checksums are now enabled by default, and weren't before 18,
+# pass '-k' to initdb on old versions so that upgrades work.
+push @initdb_params, '-k' if $oldnode->pg_version < 18;
+
 $node_params{extra} = \@initdb_params;
 $oldnode->init(%node_params);
 $oldnode->start;