long ints use for 4-byte entities in ODBC

Started by Andrew Bellabout 24 years ago4 messages
#1Andrew Bell
acbell@iastate.edu

Hi,

I was installing the ODBC driver on an alpha box. Problem is that there
are assumptions in the typedefs that a four byte integer is a "long
int". Of course, this is often an incorrect assumption. I can fix this,
but wanted to know how people wanted this done. How do you handle this
issue in the server? Seems confingure.in and associated files is the most
reasonable way to fix this to me.

Cheers,

-- Andrew Bell
acbell@iastate.edu

#2Peter Harvey
pharvey@codebydesign.com
In reply to: Andrew Bell (#1)
Re: long ints use for 4-byte entities in ODBC

I was installing the ODBC driver on an alpha box. Problem is that there
are assumptions in the typedefs that a four byte integer is a "long
int". Of course, this is often an incorrect assumption. I can fix this,
but wanted to know how people wanted this done. How do you handle this
issue in the server? Seems confingure.in and associated files is the most
reasonable way to fix this to me.

Also; which driver manager are you using? I think Nick Gorham has been
working on this issue within unixODBC.

Peter

#3Nick Gorham
nick@easysoft.com
In reply to: Andrew Bell (#1)
Re: long ints use for 4-byte entities in ODBC

Peter Harvey wrote:

I was installing the ODBC driver on an alpha box. Problem is that there
are assumptions in the typedefs that a four byte integer is a "long
int". Of course, this is often an incorrect assumption. I can fix this,
but wanted to know how people wanted this done. How do you handle this
issue in the server? Seems confingure.in and associated files is the most
reasonable way to fix this to me.

Also; which driver manager are you using? I think Nick Gorham has been
working on this issue within unixODBC.

Peter

AFAIK there should be nothing wrong with

typedef Int4 int

instead of the

typedef Int4 long

which is plainly wrong on 64 bit platforms.

--
Nick Gorham
Easysoft Ltd

#4Andrew Bell
acbell@iastate.edu
In reply to: Nick Gorham (#3)
Re: long ints use for 4-byte entities in ODBC

At 11:41 AM 12/20/2001 +0000, Nick Gorham wrote:

Peter Harvey wrote:

I was installing the ODBC driver on an alpha box. Problem is that there
are assumptions in the typedefs that a four byte integer is a "long
int". Of course, this is often an incorrect assumption. I can fix this,
but wanted to know how people wanted this done. How do you handle this
issue in the server? Seems confingure.in and associated files is the

most

reasonable way to fix this to me.

Also; which driver manager are you using? I think Nick Gorham has been
working on this issue within unixODBC.

Peter

AFAIK there should be nothing wrong with

typedef Int4 int

instead of the

typedef Int4 long

which is plainly wrong on 64 bit platforms.

Of course, the C standard doesn't say anything about the sizes of any of
the int-like datatypes, it only specifies their relative sizes. MySQL
(don't throw stones) addresses the problem like this in configure.in:

-------------------------------------------

AC_CHECK_SIZEOF(int, 4)
if test "$ac_cv_sizeof_int" -eq 0
then
AC_MSG_ERROR("No size for int type.")
fi
AC_CHECK_SIZEOF(long, 4)
if test "$ac_cv_sizeof_long" -eq 0
then
AC_MSG_ERROR("No size for long type.")
fi
AC_CHECK_SIZEOF(long long, 8)
if test "$ac_cv_sizeof_long_long" -eq 0
then
AC_MSG_ERROR("MySQL needs a long long type.")
fi
# off_t is not a builtin type
MYSQL_CHECK_SIZEOF(off_t, 4)
if test "$ac_cv_sizeof_off_t" -eq 0
then
AC_MSG_ERROR("MySQL needs a off_t type.")
fi

-------------------------------------------

Coupled with a few SIZEOF_<datatype> checks in the headers which set up the
typedefs for sized data, the problem is solved generically.

-- Andrew Bell
acbell@iastate.edu