The following bug has been logged online:
Bug reference: 5099
Logged by: konishi
Email address: a.konisi@gmail.com
PostgreSQL version: 8.4.1
Operating system: FreeBSD 6.0
Description: When MetaData is acquired, it becomes an SQL error.
Details:
In sample source and sample db
when used postgresql-8.4-701.jdbc3.jar is error
when used postgresql-8.3-603.jdbc3.jar is no error
The error disappears when "prepared.getParameterMetaData()" row delete.
sample source:
String url = "jdbc:postgresql://XXX.XXX.XXX.XXX:5432/test";
Connection con = DriverManager.getConnection(url, "postgres", "test");
try{
String sql = "insert into test(filename,upddate) values(?,?)";
PreparedStatement prepared = con.prepareStatement(sql);
System.out.println("ParameterMetaData[" +
prepared.getParameterMetaData() + "]");
prepared.setString(1, "0");
prepared.setTimestamp(2, new
Timestamp(Calendar.getInstance().getTimeInMillis()));
prepared.executeUpdate();
}catch(Exception e){
System.out.println(e.getMessage());
}
sample table:
test=# \d+ test
Table "public.test"
Column | Type | Modifiers | Storage |
Description
----------+-----------------------------+---------------+----------+--------
-----
filename | text | | extended |
upddate | timestamp without time zone | default now() | plain |
Has OIDs: no
error message:
java.lang.IllegalArgumentException: Can't change resolved type for param: 1
from 1043 to 25
at
org.postgresql.core.v3.SimpleParameterList.setResolvedType(SimpleParameterLi
st.java:230)
at
org.postgresql.core.v3.QueryExecutorImpl.sendOneQuery(QueryExecutorImpl.java
:1488)
at
org.postgresql.core.v3.QueryExecutorImpl.sendQuery(QueryExecutorImpl.java:10
62)
at
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.j
ava:479)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2St
atement.java:367)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2State
ment.java:321)
at JdbcTest.testJdbctest(JdbcTest.java:42)
...