BUG #3751: Conversion error using PreparedStatement.setObject() - Mailing list pgsql-bugs
From | Lance Andersen |
---|---|
Subject | BUG #3751: Conversion error using PreparedStatement.setObject() |
Date | |
Msg-id | 200711152201.lAFM1X1M080066@wwwmaster.postgresql.org Whole thread Raw |
Responses |
Re: BUG #3751: Conversion error using PreparedStatement.setObject()
|
List | pgsql-bugs |
The following bug has been logged online: Bug reference: 3751 Logged by: Lance Andersen Email address: lance.andersen@sun.com PostgreSQL version: 8.2.x Operating system: N/A Description: Conversion error using PreparedStatement.setObject() Details: A PreparedStatement.setObject(1, "1", Types.Bit) will fail with the following Exception: org.postgresql.util.PSQLException: ERROR: column "max_val" is of type bit but expression is of type integer at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorI mpl.java:1548) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.ja va:1316) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:191) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.j ava:452) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2St atement.java:337) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2State ment.java:283) at com.sun.jdbc.samples.BitTest.testSetObject48(BitTest.java:108) at com.sun.jdbc.samples.BitTest.runTest(BitTest.java:61) at com.sun.jdbc.samples.BitTest.main(BitTest.java:16) Here is a simple repro: package com.sun.jdbc.samples; import java.sql.*; import java.util.ArrayList; import java.util.List; import java.util.Properties; import java.math.BigDecimal; import java.math.*; import java.util.StringTokenizer; public class BitTest { List<Drivers> drivers; public static void main(String args[]){ BitTest test = new BitTest(); test.runTest(); } public BitTest() { drivers = new ArrayList<Drivers>(); // Postgresql Drivers drivers.add(new Drivers("org.postgresql.Driver", "jdbc:postgresql://jsepc18.east:5432/CTS5", "cts1", "cts1" )); } public void runTest() { Connection conn = null; for(Drivers driver : drivers){ try { Class.forName(driver.getDriver()); conn = DriverManager.getConnection(driver.getUrl(), driver.getUser(), driver.getPassword()); DatabaseMetaData dbmeta = conn.getMetaData(); dumpVersionInfo(dbmeta); testSetObject48(conn); conn.close(); }catch( Exception e ) { e.printStackTrace(); } } } public static void dumpVersionInfo(DatabaseMetaData dbmeta) { try { System.out.println("\n***********************************************"); String productName = dbmeta.getDatabaseProductName(); String productVersion = dbmeta.getDatabaseProductVersion(); String driverName = dbmeta.getDriverName(); String driverVersion = dbmeta.getDriverVersion(); System.out.println("productName: " + productName); System.out.println("productVersion: " + productVersion); System.out.println("driverName: " + driverName); System.out.println("Version: " + driverVersion); System.out.println("***********************************************"); } catch( Exception e ) { e.printStackTrace(); } } private static void testSetObject48(Connection conn) { ResultSet rs; String Min_Val_Query= "SELECT MIN_VAL from Bit_Tab"; String sMaxBooleanVal = "1"; //sMaxBooleanVal = "true"; Boolean bool = Boolean.valueOf("true"); String Min_Insert= "insert into Bit_Tab values(1,0,null)"; //System.out.println("Value to insert=" + extractVal(Min_Insert,1)); CallableStatement cstmt; try { Statement stmt = conn.createStatement(); stmt.executeUpdate("delete from Bit_Tab"); stmt.executeUpdate(Min_Insert); cstmt = conn.prepareCall("{call Bit_In_Min(?)}"); cstmt.setObject(1,sMaxBooleanVal,java.sql.Types.BIT); //cstmt.setObject(1,bool,java.sql.Types.BIT); cstmt.executeUpdate(); rs = stmt.executeQuery(Min_Val_Query); while(rs.next()){ System.out.println("Expected value=" + sMaxBooleanVal + ", Returned value as Boolean= " +rs.getBoolean(1) + ", as String=" + rs.getString(1)); } } catch (SQLException ex) { ex.printStackTrace(); } } }
pgsql-bugs by date: