On 2023-Jul-19, Andrew Dunstan wrote: > The result you report suggest to me that somehow the old version is no > longer a PostgreSQL::Version object. Here's the patch I suggest:
Ahh, okay, that makes more sense; and yes, it does work. -- Álvaro Herrera PostgreSQL Developer — https://www.EnterpriseDB.com/
>From 055b0d89f7c6667b79ba0b97f54ea5aef64dfbb1 Mon Sep 17 00:00:00 2001 From: Alvaro Herrera <alvhe...@alvh.no-ip.org> Date: Wed, 19 Jul 2023 17:54:09 +0200 Subject: [PATCH v2] Compare only major versions in AdjustUpgrade.pm Because PostgreSQL::Version is very nuanced about development version numbers, the comparison to 16beta2 makes it think that that release is older than 16, therefore applying a database tweak that doesn't work there. Fix by having AdjustUpgrade create a separate PostgreSQL::Version object that only contains the major version number. While at it, have it ensure that the objects given are of the expected type. Co-authored-by: Andrew Dunstan <and...@dunslane.net> Discussion: https://postgr.es/m/20230719110504.zbu74o54bqqlsufb@alvherre.pgsql --- src/test/perl/PostgreSQL/Test/AdjustUpgrade.pm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/test/perl/PostgreSQL/Test/AdjustUpgrade.pm b/src/test/perl/PostgreSQL/Test/AdjustUpgrade.pm index a241d2ceff..64305fdcce 100644 --- a/src/test/perl/PostgreSQL/Test/AdjustUpgrade.pm +++ b/src/test/perl/PostgreSQL/Test/AdjustUpgrade.pm @@ -76,6 +76,10 @@ sub adjust_database_contents my ($old_version, %dbnames) = @_; my $result = {}; + die "wrong type for \$old_version\n" + unless $old_version->isa("PostgreSQL::Version"); + $old_version = PostgreSQL::Version->new($old_version->major); + # remove dbs of modules known to cause pg_upgrade to fail # anything not builtin and incompatible should clean up its own db foreach my $bad_module ('test_ddl_deparse', 'tsearch2') @@ -262,6 +266,10 @@ sub adjust_old_dumpfile { my ($old_version, $dump) = @_; + die "wrong type for \$old_version\n" + unless $old_version->isa("PostgreSQL::Version"); + $old_version = PostgreSQL::Version->new($old_version->major); + # use Unix newlines $dump =~ s/\r\n/\n/g; @@ -579,6 +587,10 @@ sub adjust_new_dumpfile { my ($old_version, $dump) = @_; + die "wrong type for \$old_version\n" + unless $old_version->isa("PostgreSQL::Version"); + $old_version = PostgreSQL::Version->new($old_version->major); + # use Unix newlines $dump =~ s/\r\n/\n/g; -- 2.39.2