On 9/19/20 12:21 PM, Tom Lane wrote:
> Andrew Dunstan <[email protected]> writes:
>> Here's how cross version upgrade testing works. It uses a cached version of
>> the binaries and data directory. The cache is only refreshed if there's a
>> buildfarm run on that branch. If not, the cached version will just sit there
>> till kingdom come. So all this should normally need for the non-live
>> branches is a one-off adjustment in the cached version of the regression
>> database along the lines I have indicated. My cached versions of 9.2 and 9.3
>> are two years old.
> Hmm, okay, so patching this on gitmaster wouldn't help anyway.
>
>> But another alternative would be to have the buildfarm module run (on
>> versions older than 9.5):
>> drop operator @#@ (NONE, bigint);
>> CREATE OPERATOR @#@ (
>> PROCEDURE = factorial,
>> RIGHTARG = bigint
>> );
>> On reflection I think that's probably the simplest solution. It will avoid
>> any surprises if the cached version is rebuilt, and at the same time
>> preserve testing the prefix operator.
> Works for me.
>
>
OK, I rolled back the changes I made in the legacy branch databases, and
this fix worked.
For reference, here is the complete hotfix.
cheers
andrew
--
Andrew Dunstan https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
diff --git a/PGBuild/Modules/TestUpgradeXversion.pm b/PGBuild/Modules/TestUpgradeXversion.pm
index 8bc226f..bb9e560 100644
--- a/PGBuild/Modules/TestUpgradeXversion.pm
+++ b/PGBuild/Modules/TestUpgradeXversion.pm
@@ -434,6 +434,38 @@ sub test_upgrade ## no critic (Subroutines::ProhibitManyArgs)
}
}
+ # operators not supported from release 14
+ if ( ($this_branch gt 'REL_13_STABLE' || $this_branch eq 'HEAD')
+ && ($oversion le 'REL_13_STABLE' && $oversion ne 'HEAD'))
+ {
+ my $prstmt = join(';',
+ 'drop operator if exists #@# (bigint,NONE)',
+ 'drop operator if exists #%# (bigint,NONE)',
+ 'drop operator if exists !=- (bigint,NONE)',
+ 'drop operator if exists #@%# (bigint,NONE)');
+
+ system( "$other_branch/inst/bin/psql -X -e "
+ . " -c '$prstmt' "
+ . "regression "
+ . ">> '$upgrade_loc/$oversion-copy.log' 2>&1");
+ return if $?;
+
+ if ($oversion le 'REL9_4_STABLE')
+ {
+ # this is fixed in 9.5 and later
+ $prstmt = join(';',
+ 'drop operator @#@ (NONE, bigint)',
+ 'CREATE OPERATOR @#@ (' .
+ 'PROCEDURE = factorial, ' .
+ 'RIGHTARG = bigint )');
+ system( "$other_branch/inst/bin/psql -X -e "
+ . " -c '$prstmt' "
+ . "regression "
+ . ">> '$upgrade_loc/$oversion-copy.log' 2>&1");
+ return if $?;
+ }
+ }
+
my $extra_digits = "";
if ( $oversion ne 'HEAD'