JDBC driver doesn't handle NaN values

Поиск
Список
Период
Сортировка
От Jonathan Purvis
Тема JDBC driver doesn't handle NaN values
Дата
Msg-id 3FFE198E.8080604@reeltwo.com
обсуждение исходный текст
Ответы Re: JDBC driver doesn't handle NaN values
Список pgsql-bugs
The JDBC driver that ships with PostgreSQL 7.4.1 doesn't insert floats
of value NaN.  As it uses Float.toString(x) to convert the value for
insertion into the database, it tries to insert NaN instead of 'NaN' and
gets the error "Attribute 'nan' not found".  The same bug occurs for
doubles and will probably occur for infinite values as well (i haven't
tested it).  This bug also exists in 7.2.4 and in the 7.2.1 version
currently in Debian stable.


Here is a patch for the
"src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1Statement.java"
file.  There may need to be other files changed (eg in the jdbc2 or
jdbc3 directories), but i don't know where.


1062c1062,1063
<         bind(parameterIndex, Float.toString(x), PG_FLOAT);
---
 >         String value = Float.isNaN(x) ? "'NaN'" : Float.toString(x);
 >         bind(parameterIndex, value, PG_FLOAT);
1075c1076,1077
<         bind(parameterIndex, Double.toString(x), PG_DOUBLE);
---
 >         String value = Double.isNaN(x) ? "'NaN'" : Double.toString(x);
 >         bind(parameterIndex, value, PG_DOUBLE);
1553a1556,1559
 >         else if (x instanceof Float)
 >             return ((Float) x).isNaN() ? "'NaN'" : x.toString();
 >         else if (x instanceof Double)
 >             return ((Double) x).isNaN() ? "'NaN'" : x.toString();
1555,1556c1561
<                  x instanceof Double || x instanceof Short ||
<                  x instanceof Number || x instanceof Float)
---
 >                  x instanceof Number || x instanceof Short)



Regards,

    Jon

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: BUG #1045: hostname lookup in psql or libpg.sl does work
Следующее
От: Kris Jurka
Дата:
Сообщение: Re: jdbc1.AbstractJdbc1Statement.setBinaryStream bug and