Refuse upgrades from pre-9.0 clusters

Commit 695b4a113a added a dependency on retrieving oldestxid from
pg_control, which only exists in 9.0 and onwards, but the check for
8.4 as the oldest version was retained. Since there has been few if
any complaints of 8.4 upgrades not working, fix by setting 9.0 as
the oldest version supported rather than resurrecting 8.4 support.

Backpatch to all supported versions.

Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/1973418.1657040382@sss.pgh.pa.us
Backpatch-through: v12
This commit is contained in:
Daniel Gustafsson 2024-05-17 14:24:27 +02:00
parent 3566fc0150
commit bcd2be0c2f
2 changed files with 8 additions and 3 deletions

View File

@ -68,7 +68,7 @@ PostgreSQL documentation
</para>
<para>
pg_upgrade supports upgrades from 8.4.X and later to the current
pg_upgrade supports upgrades from 9.0.X and later to the current
major release of <productname>PostgreSQL</productname>, including snapshot and beta releases.
</para>
</refsect1>

View File

@ -280,8 +280,13 @@ check_cluster_versions(void)
* upgrades
*/
if (GET_MAJOR_VERSION(old_cluster.major_version) < 804)
pg_fatal("This utility can only upgrade from PostgreSQL version 8.4 and later.\n");
/*
* The minimum version supported when this code shipped in a major version
* was 8.4. This has since been raised to 9.0, but the support code for
* dealing with 8.4 remains to avoid refactoring in a backbranch.
*/
if (GET_MAJOR_VERSION(old_cluster.major_version) < 900)
pg_fatal("This utility can only upgrade from PostgreSQL version 9.0 and later.\n");
/* Only current PG version is supported as a target */
if (GET_MAJOR_VERSION(new_cluster.major_version) != GET_MAJOR_VERSION(PG_VERSION_NUM))