From: | "Hiroshi Inoue" <inoue(at)tpf(dot)co(dot)jp> |
---|---|
To: | "'Ruud Overeem'" <overeem(at)astron(dot)nl> |
Cc: | "'Ger van Diepen'" <diepen(at)astron(dot)nl>, "'Marcel Loose'" <loose(at)astron(dot)nl>, <pgsql-odbc(at)postgresql(dot)org> |
Subject: | Re: Conversion problem with unsigned long in psqlodbc-7.3.2 |
Date: | 2003-12-19 14:41:51 |
Message-ID: | 001601c3c63e$3d465f80$3d283ddb@PbgX |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-odbc |
> -----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
From | Date | Subject | |
---|---|---|---|
Next Message | Bui Nguyen Minh | 2003-12-20 10:52:10 | How to store and retreiving binary data using VC++ ? |
Previous Message | Hiroshi Inoue | 2003-12-19 14:35:40 | Re: Bug correction |