Re: Bug in PreparedStatement and 'numeric' columns

Поиск
Список
Период
Сортировка
От Barry Lind
Тема Re: Bug in PreparedStatement and 'numeric' columns
Дата
Msg-id 3D82B4FD.6050008@xythos.com
обсуждение исходный текст
Ответ на Bug in PreparedStatement and 'numeric' columns  (Daniel Serodio <daniel@checkforte.com.br>)
Список pgsql-jdbc
Daniel,

You should not have this problem if you use the latest version of the
driver (i.e. 7.3beta1 or the latest dev build) from jdbc.postgresql.org.

thanks,
--Barry

Daniel Serodio wrote:
 > If I understand correctly, using a PreparedStatement I shouldn't have to
 > "cast" anything in the SQL string, the driver should take care of that.
 >
 > However, I'm having problem using a column of type 'numeric'. The
 > PreparedStatement.setBigDecimal(int, BigDecimal) javadoc states that
 > "The driver converts this to an SQL NUMERIC value when it sends it to
 > the database.". But version 7.2 of the PostgreSQL JDBC driver doesn't do
 > this.
 >
 > Try the following:
 >
 > CREATE TABLE test (value numeric);
 > INSERT INTO test VALUES (12.34);
 >
 > And in the Java code:
 >
 > PreparedStatement pStmt = connection.prepareStatement("SELECT * FROM
 > test WHERE value = ?");
 > pStmt.setBigDecimal(1, new BigDecimal("12.34"));
 > ResultSet rs  = pStmt.executeQuery();
 >
 > Throws the following SQLException:
 > "ERROR:  Unable to identify an operator '=' for types 'numeric' and
 > 'double precision'
 >     You will have to retype this query using an explicit cast"
 >
 > Looking at the server's log, I see it received "SELECT * FROM test WHERE
 > value = 12.34" instead of the "SELECT * FROM test WHERE value =
 > 12.34::numeric" it should have received if setBigDecimal() was
 > implemented the way the Javadoc says.
 >
 > So I think I have found a bug in the PostgreSQL JDBC driver, right?
 >
 >



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

Предыдущее
От: Dave Cramer
Дата:
Сообщение: Re: Retrieving ResultSets with millions of rows -
Следующее
От: Stephen Bacon
Дата:
Сообщение: Recommended technique for large imports?