Re: Version Number Function? - Mailing list pgsql-hackers

From Hannu Krosing
Subject Re: Version Number Function?
Date
Msg-id 1223995444.8222.3.camel@huvostro
Whole thread Raw
In response to Re: Version Number Function?  ("David E. Wheeler" <david@kineticode.com>)
Responses Re: Version Number Function?
List pgsql-hackers
On Sun, 2008-10-12 at 14:39 -0700, David E. Wheeler wrote:
> On Oct 12, 2008, at 14:11, Tom Lane wrote:
> 
> > You'd have to parse the result of version().
> 
> As I figured. This is what I'm trying:

if performance is not critical, then you could use this:

hannu=# create or replace function pg_version_num() returns int language
SQL as $$ select 10000 *  cast(substring(version()                from                '^PostgreSQL
+([0-9]+)[.][0-9]+[.][0-9]++') as int) + 100 *  cast(substring(version()                from
'^PostgreSQL+[0-9]+[.]([0-9]+)[.][0-9]+ +') as int)  +  cast(substring(version()                from
'^PostgreSQL+[0-9]+[.][0-9]+[.]([0-9]+) +') as int);
 
$$;
CREATE FUNCTION

hannu=# select pg_version_num();pg_version_num 
----------------         80303
(1 row)

> pg_version_num(PG_FUNCTION_ARGS)
> {
> #ifdef PG_VERSION_NUM
>      PG_RETURN_INT32(PG_VERSION_NUM);
> #else
>      /* Code borrowed from dumputils.c. */
>     int            cnt;
>     int            vmaj,
>                 vmin,
>                 vrev;
> 
>     cnt = sscanf(PG_VERSION, "%d.%d.%d", &vmaj, &vmin, &vrev);
> 
>     if (cnt < 2)
>         return -1;
> 
>     if (cnt == 2)
>         vrev = 0;
> 
>     PG_RETURN_INT32( (100 * vmaj + vmin) * 100 + vrev );
> #endif
> 
> Best,
> 
> David
> 
> 



pgsql-hackers by date:

Previous
From: "Dave Page"
Date:
Subject: Re: 8.3 .4 + Vista + MingW + initdb = ACCESS_DENIED
Next
From: Tom Lane
Date:
Subject: Re: 8.3 .4 + Vista + MingW + initdb = ACCESS_DENIED