On 4/22/21 11:46 AM, Mark Dilger wrote:
>
>> On Apr 22, 2021, at 8:09 AM, Alvaro Herrera <alvhe...@alvh.no-ip.org> wrote:
>>
>>> +   # Accept standard formats, in case caller has handed us the output of a
>>> +   # postgres command line tool
>>> +   $arg = $1
>>> +           if ($arg =~ m/\(?PostgreSQL\)? (\d+(?:\.\d+)*(?:devel)?)/);
>>> +
>>> +   # Split into an array
>>> +   my @result = split(/\./, $arg);
>>> +
>>> +   # Treat development versions as having a minor/micro version one less 
>>> than
>>> +   # the first released version of that branch.
>>> +   if ($result[$#result] =~ m/^(\d+)devel$/)
>>> +   {
>>> +           pop(@result);
>>> +           push(@result, $1, -1);
>>> +   }
>> It's a bit weird to parse the "devel" bit twice.  Would it work to leave
>> (?:devel)? out of the capturing parens that becomes $1 in the first
>> regex and make it capturing itself, so you get "devel" in $2, and decide
>> based on its presence/absence?  Then you don't have to pop and push a -1.
> The first regex should match things like "12", "12.1", "14devel", or those 
> same things prefixed with "(PostgreSQL) ", and strip off the "(PostgreSQL)" 
> part if it exists.  But the code should also BAIL_OUT if the regex completely 
> fails to match.
>


Not quite. PostgresVersion doesn't know about Test::More. It could die
(or croak) and we could catch it in an eval.


cheers


andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com



Reply via email to