oid int issue with CachedRowSet upgrading from JDBC 8.4 to 9.1
От | otran |
---|---|
Тема | oid int issue with CachedRowSet upgrading from JDBC 8.4 to 9.1 |
Дата | |
Msg-id | 1331328320772-5551763.post@n5.nabble.com обсуждение исходный текст |
Ответы |
Re: oid int issue with CachedRowSet upgrading from JDBC 8.4 to 9.1
Re: oid int issue with CachedRowSet upgrading from JDBC 8.4 to 9.1 |
Список | pgsql-jdbc |
Hi, We are in the process of upgrading from Postgres JDBC 8.4 to 9.1-901-1.jdbc4 and discovered that CacheRowSet now call the methods isAutoIncrement() and fetchFieldMetaData(), which will fail converting a OID to an int. The following code works with the 8.4 driver, but fails with 9.1: public static void main(String[] args) throws Exception { Properties connectionProperties = new Properties(); connectionProperties.put("user", "otran"); connectionProperties.put("pass", "”); Class.forName("org.postgresql.Driver"); Connection connection = DriverManager.getConnection("jdbc:postgresql://postgres-9.1", connectionProperties); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("select * from airports"); CachedRowSet cachedRowSet = new CachedRowSetImpl(); cachedRowSet.populate(resultSet); } $ export CLASSPATH=postgresql-8.4-702.jdbc4.jar:. $ java Test $ export CLASSPATH=postgresql-9.1-901-1.jdbc4.jar:. $ java Test Exception in thread "main" org.postgresql.util.PSQLException: Bad value for type int : 3090704121 at org.postgresql.jdbc2.AbstractJdbc2ResultSet.toInt(AbstractJdbc2ResultSet.java:2731) at org.postgresql.jdbc2.AbstractJdbc2ResultSet.getInt(AbstractJdbc2ResultSet.java:1983) at org.postgresql.jdbc2.AbstractJdbc2ResultSetMetaData.fetchFieldMetaData(AbstractJdbc2ResultSetMetaData.java:242) at org.postgresql.jdbc2.AbstractJdbc2ResultSetMetaData.isAutoIncrement(AbstractJdbc2ResultSetMetaData.java:61) at com.sun.rowset.CachedRowSetImpl.initMetaData(CachedRowSetImpl.java:701) at com.sun.rowset.CachedRowSetImpl.populate(CachedRowSetImpl.java:621) at Test.main(Test.java:22) It only affects our production environments where the oids are larger than an int, but many of our tables have that issue. We can try ripping out CachedRowSets, but wonder if someone has a fix. Seems related to: RELEASE NOTE... With Version 89.3-dev600 (2007-04-18). Make the default object return type of oids to be a Java Long instead of Integer because oids are unsigned and exceed the range of Integer. (jurka) http://postgresql.1045698.n5.nabble.com/oid-as-long-type-td2169988.html Thanks, Owen -- View this message in context: http://postgresql.1045698.n5.nabble.com/oid-int-issue-with-CachedRowSet-upgrading-from-JDBC-8-4-to-9-1-tp5551763p5551763.html Sent from the PostgreSQL - jdbc mailing list archive at Nabble.com.
В списке pgsql-jdbc по дате отправления: