On 9/19/20 12:21 PM, Tom Lane wrote: > Andrew Dunstan <andrew.duns...@2ndquadrant.com> 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'