Re: Version Number Function?
От | Hannu Krosing |
---|---|
Тема | Re: Version Number Function? |
Дата | |
Msg-id | 1223995444.8222.3.camel@huvostro обсуждение исходный текст |
Ответ на | Re: Version Number Function? ("David E. Wheeler" <david@kineticode.com>) |
Ответы |
Re: Version Number Function?
|
Список | 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 по дате отправления: