> -----Original Message-----
> From: Ruud Overeem
>
> Hi,
>
> We just installed version 7.3.2 of the postgres ODBC driver
> on a RedHat
> 9.0 system. When testing the limits all the variable-types it appeared
> that unsigned long values are stored correct in the database
> but we they
> are read back we hit the LONG_MAX range.
>
> E.g. assign the value 2345678901 to an unsigned long, write
> that to the
> database and read it back. The database contains 2345678901 but the
> unsigned long variable is set to LONG_MAX (2147483647).
>
> Digging into the sources I think I found the problem. In convert.c at
> line 1184 the code says:
> case SQL_C_ULONG:
> len = 4;
> if (bind_size > 0)
> *((UDWORD *) rgbValueBindRow) = atol(neut_str);
> else
> *((UDWORD *) rgbValue + bind_row) = atol(neut_str);
> break;
>
> The function atol only works for signed long integers. When
> you replace
> 'atol(neut_str)' with 'strtoul(neut_str, 0 , 10)' it works fine.
I would take care of it.
Thanks.
Hiroshi Inoue