Re: Conversion problem with unsigned long in psqlodbc-7.3.2
От | Hiroshi Inoue |
---|---|
Тема | Re: Conversion problem with unsigned long in psqlodbc-7.3.2 |
Дата | |
Msg-id | 001601c3c63e$3d465f80$3d283ddb@PbgX обсуждение исходный текст |
Ответ на | Conversion problem with unsigned long in psqlodbc-7.3.2 ("Ruud Overeem" <overeem@astron.nl>) |
Список | 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
В списке pgsql-odbc по дате отправления: