Conversion problem with unsigned long in psqlodbc-7.3.2

Поиск
Список
Период
Сортировка
От Ruud Overeem
Тема Conversion problem with unsigned long in psqlodbc-7.3.2
Дата
Msg-id sfce020c.021@server7.nfra.nl
обсуждение исходный текст
Ответы Re: Conversion problem with unsigned long in psqlodbc-7.3.2
Список 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

В списке pgsql-odbc по дате отправления:

Предыдущее
От: "Dave Page"
Дата:
Сообщение: Re: Sniffer to trace ODBC calls?
Следующее
От: "nobody"
Дата:
Сообщение: Re: access and postgresql