Re: [HACKERS] how solve diff of API counstruct_md_array between - Mailing list pgsql-patches
From | Bruce Momjian |
---|---|
Subject | Re: [HACKERS] how solve diff of API counstruct_md_array between |
Date | |
Msg-id | 200602280545.k1S5jI002272@candle.pha.pa.us Whole thread Raw |
Responses |
Re: [HACKERS] how solve diff of API counstruct_md_array between
|
List | pgsql-patches |
I have developed a patch which creates a new pg_config.h define called PG_VERSION_NUM, which is a number like 80200, with no beta/devel designation. I think this will be helpful (eventually) for people writing plug-ins. Attached. --------------------------------------------------------------------------- Martijn van Oosterhout wrote: -- Start of PGP signed section. > On Fri, Feb 24, 2006 at 02:57:19PM -0500, Bruce Momjian wrote: > > 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. > > We don't need a function to do it, because none of that can be used by > a compiler. If a structure gains or loses a member, the only way you > can do it portibly is if the compiler can determine which version to > use. The only thing the preprocessor can use is: > > - Is a (preprocessor) symbol defined > - Is it numerically greater equal or less than another number > > So the only solution would be something like: > > #define POSTGRESQL_MAJOR 8 > #define POSTGRESQL_MINOR 1 > #define POSTGRESQL_RELEASE 1 > > Or > > #define POSTGRESQL_VERSION 80101 > > Maybe something to indicate beta or CVS. Anything else is not likely to > be an improvement on what we have now. Besides, adding stuff now is not > terribly useful since people want to support back to 7.3/7.4 and until > a new scheme is old enough that 8.2 is ancient (first release it could > possibly appear in) it won't get a lot of usage. > > Have a nice day, > -- > Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/ > > Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a > > tool for doing 5% of the work and then sitting around waiting for someone > > else to do the other 95% so you can sue them. -- End of PGP section, PGP failed! -- 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. + Index: configure =================================================================== RCS file: /cvsroot/pgsql/configure,v retrieving revision 1.480 diff -c -c -r1.480 configure *** configure 21 Feb 2006 06:06:44 -0000 1.480 --- configure 28 Feb 2006 05:43:36 -0000 *************** *** 4742,4747 **** --- 4742,4755 ---- fi + # Supply a numeric version string for use by 3rd party add-ons + PG_VERSION_NUM="`echo "$PACKAGE_VERSION" | sed 's/A-Za-z.*$//' | + $AWK -F'\.' '{printf \"%d%02d\", $1, $2; printf \"%02d\", (NF == 2) ? 0 : $3}'`" + + cat >>confdefs.h <<_ACEOF + #define PG_VERSION_NUM $PG_VERSION_NUM + _ACEOF + ## ## Libraries Index: configure.in =================================================================== RCS file: /cvsroot/pgsql/configure.in,v retrieving revision 1.450 diff -c -c -r1.450 configure.in *** configure.in 21 Feb 2006 06:06:50 -0000 1.450 --- configure.in 28 Feb 2006 05:43:36 -0000 *************** *** 26,32 **** AC_PREFIX_DEFAULT(/usr/local/pgsql) AC_SUBST(configure_args, [$ac_configure_args]) ! AC_DEFINE_UNQUOTED(PG_VERSION, "$PACKAGE_VERSION", [PostgreSQL version]) AC_CANONICAL_HOST --- 26,32 ---- AC_PREFIX_DEFAULT(/usr/local/pgsql) AC_SUBST(configure_args, [$ac_configure_args]) ! AC_DEFINE_UNQUOTED(PG_VERSION, "$PACKAGE_VERSION", [PostgreSQL version as a string]) AC_CANONICAL_HOST *************** *** 585,590 **** --- 585,594 ---- PGAC_CHECK_PYTHON_EMBED_SETUP fi + # Supply a numeric version string for use by 3rd party add-ons + PG_VERSION_NUM="`echo "$PACKAGE_VERSION" | sed 's/[A-Za-z].*$//' | + $AWK -F'\.' '{printf \"%d%02d\", $1, $2; printf \"%02d\", (NF == 2) ? 0 : $3}'`" + AC_DEFINE_UNQUOTED(PG_VERSION_NUM, $PG_VERSION_NUM, [PostgreSQL version as a number]) ## ## Libraries Index: src/include/pg_config.h.in =================================================================== RCS file: /cvsroot/pgsql/src/include/pg_config.h.in,v retrieving revision 1.93 diff -c -c -r1.93 pg_config.h.in *** src/include/pg_config.h.in 21 Feb 2006 06:06:50 -0000 1.93 --- src/include/pg_config.h.in 28 Feb 2006 05:43:42 -0000 *************** *** 547,555 **** (--with-krb-srvnam=NAME) */ #undef PG_KRB_SRVNAM ! /* PostgreSQL version */ #undef PG_VERSION /* A string containing the version number, platform, and C compiler */ #undef PG_VERSION_STR --- 547,558 ---- (--with-krb-srvnam=NAME) */ #undef PG_KRB_SRVNAM ! /* PostgreSQL version as a string */ #undef PG_VERSION + /* PostgreSQL version as a number */ + #undef PG_VERSION_NUM + /* A string containing the version number, platform, and C compiler */ #undef PG_VERSION_STR
pgsql-patches by date: