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  (Dave Cramer <pg@fastcrypt.com>)
Re: oid int issue with CachedRowSet upgrading from JDBC 8.4 to 9.1  (Kris Jurka <books@ejurka.com>)
Список 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 по дате отправления:

Предыдущее
От: Jack Douglas
Дата:
Сообщение: create function with dollar quoted body
Следующее
От: Dave Cramer
Дата:
Сообщение: Re: oid int issue with CachedRowSet upgrading from JDBC 8.4 to 9.1