Re: Conversion problem with unsigned long in psqlodbc-7.3.2

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

In response to

Browse pgsql-odbc by date

  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