postgres.git / summary / log / commit / refs

commit    df4e93bea4f9370c14f01d27e6d36cbe7afaac72
Author:   Andrew Dunstan <andrew@dunslane.net>
Date:     Fri Nov 18 13:38:26 2022 +0000
First released in: 16.0, 14.7, 15.2

    Fix version comparison in Version.pm
    
    Version strings with unequal numbers of parts were being compared
    incorrectly. We cure this by treating a missing part in the shorter
    version as 0.
    
    per complaint from Jehan-Guillaume de Rorthais, but the fix is mine, not
    his.
    
    Discussion: https://postgr.es/m/20220628225325.53d97b8d@karst
    
    Backpatch to release 14 where this code was introduced.


src/test/perl/PostgreSQL/Version.pm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/test/perl/PostgreSQL/Version.pm b/src/test/perl/PostgreSQL/Version.pm index 8f704911895..8d4dbbf6948 100644 --- a/src/test/perl/PostgreSQL/Version.pm +++ b/src/test/perl/PostgreSQL/Version.pm @@ -123,9 +123,12 @@ sub _version_cmp for (my $idx = 0;; $idx++) { - return 0 unless (defined $an->[$idx] && defined $bn->[$idx]); - return $an->[$idx] <=> $bn->[$idx] - if ($an->[$idx] <=> $bn->[$idx]); + return 0 + if ($idx >= @$an && $idx >= @$bn); + # treat a missing number as 0 + my ($anum, $bnum) = ($an->[$idx] || 0, $bn->[$idx] || 0); + return $anum <=> $bnum + if ($anum <=> $bnum); } } [parent: 3d45edcef0e1]