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'

Reply via email to