Thread: --enable-odbc issue for Darwin/Mac OS X
I grabbed the current source using anon CVS and compiled it using a recent Mac OS X build. I used --enable-odbc and ran into compile problems with four files in interfaces/odbc (bind, columninfo, environ, tuplelist) because they have an unconditional include of <malloc.h>. I manually changed the files using the following conditional compile and they work fine. (I borrowed this from a couple of other open source tools). /* Ignore malloc.h if we have STDC_HEADERS */ #if defined(HAVE_MALLOC_H) && !defined(STDC_HEADERS) # include <malloc.h> #endif Unfortunately, I'm not adept with configure* files and don't feel equipped to propose a change to those that would likely work on all platforms (i.e. to check for stdlib.h/malloc.h. Can anyone assist or provide some guidance? Thanks, Ron _______________________ Ronald Guest Pepsan & Associates, Inc. Creating Pathways to Excellence ronald@pepsan.com http://www.pepsan.com _______________________ Nothing great was ever achieved without enthusiasm - Ralph Waldo Emerson
Ronald Guest <ronald@pepsan.com> writes: > /* Ignore malloc.h if we have STDC_HEADERS */ > #if defined(HAVE_MALLOC_H) && !defined(STDC_HEADERS) > # include <malloc.h> > #endif I'd vote for ripping those includes out altogether. No other part of our sources needs <malloc.h>, and I don't believe ODBC does or should either. In a larger sense, the ODBC driver is probably not nearly as portable as the rest of Postgres, because it hasn't gotten wrung out on as many platforms. Maybe we ought to start compiling it by default (not for 7.1 though ;-)). regards, tom lane
Tom Lane writes: > I'd vote for ripping those includes out altogether. No other part of > our sources needs <malloc.h>, and I don't believe ODBC does or should > either. Gone. > In a larger sense, the ODBC driver is probably not nearly as portable > as the rest of Postgres, because it hasn't gotten wrung out on as many > platforms. Maybe we ought to start compiling it by default (not for > 7.1 though ;-)). The greatest problem is the unportable use of the _init and _fini symbols to hook into startup and shutdown. If you're using GCC then you will get GCC's portable wrapper for that, but it looks gloomy on other compilers. More generally, the usefulness of the present ODBC driver would seem to depend somewhat on the driver manager used with it. The current Unix build is geared toward iODBC, and we already had to mess with rather low level shared library linking options to get that to work correctly. -- Peter Eisentraut peter_e@gmx.net http://yi.org/peter-e/