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
> 
> 


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to