From: | "Ruud Overeem" <overeem(at)astron(dot)nl> |
---|---|
To: | <pgsql-odbc(at)postgresql(dot)org> |
Cc: | "Ger van Diepen" <diepen(at)astron(dot)nl>, "Marcel Loose" <loose(at)astron(dot)nl> |
Subject: | Conversion problem with unsigned long in psqlodbc-7.3.2 |
Date: | 2003-12-03 14:31:53 |
Message-ID: | sfce020c.021@server7.nfra.nl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-odbc |
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.
With kind Regards,
Ruud Overeem
Astron
From | Date | Subject | |
---|---|---|---|
Next Message | Sezmillenium | 2003-12-04 05:49:32 | access and postgresql |
Previous Message | Cristian Custodio | 2003-12-03 11:09:55 | Re: Character invalid saving memo with UpdateSQL |