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
HTH,
Joe