Re: Extracting cross-version-upgrade knowledge from buildfarm client
Andrew Dunstan <andrew@dunslane.net>
From: Andrew Dunstan <andrew@dunslane.net>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers@lists.postgresql.org
Date: 2023-07-19T20:44:15Z
Lists: pgsql-hackers
On 2023-07-19 We 15:20, Andrew Dunstan wrote:
>
>
> On 2023-07-19 We 12:05, Alvaro Herrera wrote:
>
>
>>> Maybe we need to make AdjustUpgrade just look at the major version,
>>> something like:
>>>
>>> $old_version = PostgreSQL::Version->new($old_version->major);
>> It seems like that does work, but if we do that, then we also need to
>> change this line:
>>
>> if ($old_version lt '9.5')
>> to
>> if ($old_version < '9.5')
>>
>> otherwise you get some really mysterious failures about trying to drop
>> public.=>, which is in fact no longer accepted syntax since 9.5; and the
>> stringwise comparison returns the wrong value here.
>
>
> That seems odd. String comparison like that is supposed to work. I
> will do some tests.
>
>
>> TBH I'm getting a sense of discomfort with the idea of having developed
>> a Postgres-version-number Perl module, and in the only place where we
>> can use it, have to settle for numeric comparison instead.
>
>
> These comparisons only look like that. They are overloaded in
> PostgreSQL::Version.
>
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:
diff --git a/src/test/perl/PostgreSQL/Test/AdjustUpgrade.pm
b/src/test/perl/PostgreSQL/Test/AdjustUpgrade.pm
index a241d2ceff..d7a7383deb 100644
--- a/src/test/perl/PostgreSQL/Test/AdjustUpgrade.pm
+++ b/src/test/perl/PostgreSQL/Test/AdjustUpgrade.pm
@@ -74,6 +74,11 @@ values are arrayrefs to lists of statements to be run
in those databases.
sub adjust_database_contents
{
my ($old_version, %dbnames) = @_;
+
+ die "wrong type for \$old_version\n"
+ unless $old_version->isa("PostgreSQL::Version");
+ $old_version = PostgreSQL::Version->new($old_version->major);
+
my $result = {};
# remove dbs of modules known to cause pg_upgrade to fail
Do you still see errors with that?
cheers
andrew
--
Andrew Dunstan
EDB:https://www.enterprisedb.com
Commits
-
Compare only major versions in AdjustUpgrade.pm
- 6061adedf53c 17.0 landed
- 28ce9d51f908 16.0 landed
-
Get rid of the "new" and "old" entries in a view's rangetable.
- 47bb9db75996 16.0 landed
-
Create common infrastructure for cross-version upgrade testing.
- 52585f8f072a 16.0 landed
- f02a75222821 11.19 landed
- ddd89df26b97 10 (unreleased) landed
- bfa3d2790664 9.5 (unreleased) landed
- a2091843f69e 9.2 (unreleased) landed
- 8e7398dce55b 14.7 landed
- 4bcf3521290a 9.4 (unreleased) landed
- 4ad0896bca92 15.2 landed
- 3f0b9df88bb3 13.10 landed
- 3911fd55f53a 9.6 (unreleased) landed
- 2e8bedc3d68c 9.3 (unreleased) landed
- 0e4d38100acb 12.14 landed