Re: how solve diff of API counstruct_md_array between - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: how solve diff of API counstruct_md_array between
Date
Msg-id 200602241957.k1OJvJj06015@candle.pha.pa.us
Whole thread Raw
In response to Re: how solve diff of API counstruct_md_array between  (Joe Conway <mail@joeconway.com>)
Responses Re: how solve diff of API counstruct_md_array between
List pgsql-hackers
Joe Conway wrote:
> Martijn van Oosterhout wrote:
> > On Thu, Feb 16, 2006 at 08:36:34PM +0100, Pavel Stehule wrote:
> >>I use counstruct_md_array function in my Orafunc module. CVS version has 
> >>diff def now. I am findig way for simple solution of maintaince source code 
> >>for both version. I have PG_VERSION variable, but it's unusable. Is there 
> >>way for contrib's autors differentiate PostgreSQL versions? I don't want to 
> >>have two versions of source code.
> > 
> > For my stuff I've generally use CATALOG_VERSION_NO. It's not very easy,
> > but by looking through CVS you can find when the function was created
> > and in your code use:
> > 
> > #ifdef CATALOG_VERSION_NO > yyyymmddN
> > /* New stuff */
> > #else
> > /* Old stuff */
> > #endif
> 
> I do pretty much the same thing in PL/R. The good news is that 
> CATALOG_VERSION_NO doesn't change for each major release once it is 
> released. The following hasn't been updated since the 8.1 release, but 
> you could use it as a starting point:
> 
> #if (CATALOG_VERSION_NO <= 200211021)
> #define PG_VERSION_73_COMPAT
> #elif (CATALOG_VERSION_NO <= 200310211)
> #define PG_VERSION_74_COMPAT
> #elif (CATALOG_VERSION_NO <= 200411041)
> #define PG_VERSION_80_COMPAT
> #else
> #define PG_VERSION_81_COMPAT
> #endif

Yea, that is probably the best you can do currently, but it is pretty
ugly.  We have PQserverVersion() in libpq for use by clients, which
does:
           conn->sversion = (100 * vmaj + vmin) * 100 + vrev;

Perhaps we should have a function in the server that has this. 
PG_VERSION isn't easy to use because it is a string, and changes during
minor versions.

initdb.c uses get_short_version() to trims PG_VERSION to the major part.

--  Bruce Momjian   http://candle.pha.pa.us SRA OSS, Inc.   http://www.sraoss.com
 + If your life is a hard drive, Christ can be your backup. +


pgsql-hackers by date:

Previous
From: Hannu Krosing
Date:
Subject: Re: fsutil ideas
Next
From: Martijn van Oosterhout
Date:
Subject: Re: how solve diff of API counstruct_md_array between