Re: Extracting cross-version-upgrade knowledge from buildfarm client

Поиск
Список
Период
Сортировка
От Andrew Dunstan
Тема Re: Extracting cross-version-upgrade knowledge from buildfarm client
Дата
Msg-id dc0f4da5-4f18-92d0-771d-de97f300c449@dunslane.net
обсуждение исходный текст
Ответ на Re: Extracting cross-version-upgrade knowledge from buildfarm client  (Andrew Dunstan <andrew@dunslane.net>)
Список pgsql-hackers


On 2023-07-19 We 16:44, Andrew Dunstan wrote:


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?




Just realized it would need to be applied in all three exported routines.


cheers


andrew


--
Andrew Dunstan
EDB: https://www.enterprisedb.com

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Jeff Davis
Дата:
Сообщение: Re: Use of additional index columns in rows filtering
Следующее
От: Tomas Vondra
Дата:
Сообщение: Re: logical decoding and replication of sequences, take 2