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