setObject(int, Object) can not convert Java String object to backend's Integer type

From: Chen Huajun <chenhj(at)cn(dot)fujitsu(dot)com>
To: List <pgsql-jdbc(at)postgresql(dot)org>
Subject: setObject(int, Object) can not convert Java String object to backend's Integer type
Date: 2013-01-08 11:04:34
Message-ID: 50EBFD42.6060401@cn.fujitsu.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

Hi,

According to JDBC Specification Java String object could be converted to
backend's Integer type by setObject().
But in PostgreSQL JDBC, it's not true. It seems to be a bug.

Sample:
PreparedStatement stmt = con.prepareStatement("select 1::int = ?");
stmt.setObject(1, "2");
ResultSet rs = stmt.executeQuery();//raises an error here!

*)but the following is OK
stmt.setObject(1, "2",Types.INTEGER);
stmt.setObject(1, "2",Types.OTHER);

Internally stmt.setObject(1, "2") binds "2" as varchar ,
if it binds "2" as unspecified type,the result will be OK.

Regards,
Chen Huajun

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Dave Cramer 2013-01-08 11:15:24 Re: setObject(int,Object) can not convert Java String object to backend's Integer type
Previous Message Andriy Redko 2013-01-04 13:50:04 Bug report: buggy implementation of setQueryTimeout() in latest JDBC drivers 9.2-100x (AbstractJdbc2Statement.java)