Thread: BUG #3806: PreparedStatement.setString(String) throws exception

BUG #3806: PreparedStatement.setString(String) throws exception

From
"Ted Wen"
Date:
The following bug has been logged online:

Bug reference:      3806
Logged by:          Ted Wen
Email address:      tedwen@nesc.ac.uk
PostgreSQL version: 8.3beta3
Operating system:   Windows
Description:        PreparedStatement.setString(String) throws exception
Details:

Code fragment:

String sql = "create table uuidtab(id uuid not null,num int,primary key
(id))";
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);

sql = "insert into uuidtab
values('8555b4c4-5b3d-41ab-9f0f-c71120a583b1',10)";
stmt.executeUpdate(sql);

sql = "select * from uuidtab where id=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "8555b4c4-5b3d-41ab-9f0f-c71120a583b1");
ResultSet rs = ps.executeQuery();
if (rs.next()) {
  System.out.println(rs.getString(1));
}

The last executeQuery() produces the following error message:
org.postgresql.util.PSQLException: ERROR: operator does not exist: uuid =
character varying

Re: BUG #3806: PreparedStatement.setString(String) throws exception

From
Simon Riggs
Date:
On Thu, 2007-12-06 at 23:21 +0000, Ted Wen wrote:

> sql = "select * from uuidtab where id=?";
> PreparedStatement ps = conn.prepareStatement(sql);
> ps.setString(1, "8555b4c4-5b3d-41ab-9f0f-c71120a583b1");
> ResultSet rs = ps.executeQuery();
> if (rs.next()) {
>   System.out.println(rs.getString(1));
> }
>
> The last executeQuery() produces the following error message:
> org.postgresql.util.PSQLException: ERROR: operator does not exist: uuid =
> character varying

Try sql = "select * from uuidtab where id=?::uuid";

--
  Simon Riggs
  2ndQuadrant  http://www.2ndQuadrant.com