diff options
author | Andrew Dunstan <andrew@dunslane.net> | 2022-11-18 08:38:26 -0500 |
---|---|---|
committer | Andrew Dunstan <andrew@dunslane.net> | 2022-11-18 08:45:58 -0500 |
commit | 97ee956416e9d7906cde49cae5f65763ea943e77 (patch) | |
tree | ac93ee260ab3d9ca873992224b31c1f4149d70b7 /src/test/perl/PostgreSQL/Version.pm | |
parent | 83eccb85625fce8f63ee2cd4fc60d72de4008d90 (diff) | |
download | postgresql-97ee956416e9d7906cde49cae5f65763ea943e77.tar.gz postgresql-97ee956416e9d7906cde49cae5f65763ea943e77.zip |
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.
Diffstat (limited to 'src/test/perl/PostgreSQL/Version.pm')
-rw-r--r-- | src/test/perl/PostgreSQL/Version.pm | 9 |
1 files 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); } } |