Skip to Content.
Sympa Menu

freetds - Re: [freetds] ODBC on 64 bit linux fix.

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Steve Langasek <vorlon AT dodds.net>
  • To: freetds AT lists.ibiblio.org
  • Subject: Re: [freetds] ODBC on 64 bit linux fix.
  • Date: Thu, 17 Jan 2008 13:01:38 -0800

On Thu, Jan 17, 2008 at 03:13:16PM -0500, Christos Zoulas wrote:
> On Jan 17, 11:55am, vorlon AT dodds.net (Steve Langasek) wrote:
> -- Subject: Re: [freetds] ODBC on 64 bit linux fix.
> | This is also not the right place to make this change. If UnixODBC is
> built
> | in 64-bit mode, then everything that builds against it *also* needs to be
> | built with the correct 64-bit API, which means that this switch should be
> | hard-coded in the header files installed by UnixODBC. So it's UnixODBC
> that
> | should be patched, not FreeTDS.

> I mentioned this (that other clients need to be built with that option). I
> don't understand why this option is not the default on 64 bit systems.

Upstream hesitation to break with the documented ODBC standard, in spite of
the fact that, where it differs from the behavior enabled by the
BUILD_REAL_64_BIT_MODE flag, the documented ODBC standard is broken and
worthless on 64-bit archs.

I think they will eventually come around to making this the default, but
they haven't been persuaded yet.

> | > --- freetds-0.83.dev.20080117/configure.ac 2008-01-11
> 07:43:39.000000000 -0500
> | > +++ freetds-0.83.dev.20080117.new/configure.ac 2008-01-17
> 12:38:35.539382636 -0500
> | > @@ -242,6 +242,7 @@
> | > #ifdef HAVE_WCHAR_H
> | > #include <wchar.h>
> | > #endif])
> | > +AC_DEFINE(DO_YOU_KNOW_WHAT_YOUR_ARE_DOING, 1, [Hack for 64 bit ODBC])
> | >
> | > case 2 in
> | > $ac_cv_sizeof_short) tds_sysdep_int16_type=short;;
> |
> | So what's the point of making it a conditional define if it's not actually
> | under the user's control? This also further breaks things for users
> | unfortunate enough to be on a platform where UnixODBC has been built
> without
> | the 64-bit-clean API.

> Which does not work anyway, so what's the point? At least building with
> that option gives you a working 64-bit-ODBC.

My point is that there's no value in putting it in configure.ac, because
it's not something that's configurable.

> | If you just need to build FreeTDS with the right interface and don't want
> | to / aren't in a position to edit sqltypes.h, building with
> | CFLAGS=-DBUILD_REAL_64_BIT_MODE should do the job.

> I think that on 64 bit platforms, we should always ODBC build with that
> option
> or not build it at all. The patch I sent always builds it with the option
> set,
> since it is up to you if you want to use it or not. Building it without the
> option produces a non-working library...

Yes, but your patch doesn't guard against producing a non-working library;
you can still get a non-working library by using this patch if the ODBC
manager or apps have been built without the 64-bit flag. I don't think
that's an improvement, I think this needs to be addressed at the source
(UnixODBC) and any workarounds like this are just going to further
complicate the landscape.

Cheers,
--
Steve Langasek Give me a lever long enough and a Free OS
Debian Developer to set it on, and I can move the world.
Ubuntu Developer http://www.debian.org/
slangasek AT ubuntu.com vorlon AT debian.org




Archive powered by MHonArc 2.6.24.

Top of Page