SQLException: Invalid precision value. Cannot be less than zero - Mailing list pgsql-jdbc

From Nebojsa Vasiljevic
Subject SQLException: Invalid precision value. Cannot be less than zero
Date
Msg-id 000901c50ef7$b787f9e0$ad00a8c0@mediacenter.org.yu
Whole thread Raw
Responses Re: SQLException: Invalid precision value. Cannot be less
List pgsql-jdbc
The exception occures in populate() method:

 CachedRowSetImpl rowSet = new CachedRowSetImpl();
 r=as.executeQuery("select * from an_tnratio");
 rowSet.populate(r);

Table definition is:

-- Table: an_tnratio

-- DROP TABLE an_tnratio;

CREATE TABLE an_tnratio
(
  ssize text,
  edulh text,
  tnratio numeric
)
WITH OIDS;
ALTER TABLE an_tnratio OWNER TO elan;


Stack trace:

java.sql.SQLException: Invalid column display size. Cannot be less than zero
        at
javax.sql.rowset.RowSetMetaDataImpl.setColumnDisplaySize(RowSetMetaDataImpl.java:267)
        at
com.sun.rowset.CachedRowSetImpl.initMetaData(CachedRowSetImpl.java:679)
        at
com.sun.rowset.CachedRowSetImpl.populate(CachedRowSetImpl.java:597)
        at com.sw4i.elan.engine.Table$1.doo(Table.java:51)
        ...

Driver version: 8.0-310 (postgresql-8.0-310.jdbc3.jar)
Sun JDK version:  1.5.0_01-b08
Database PosgreSQL 8.0.0 on i686-pc-mingw32, compiled by GCC gcc.exe(GCC)
3.4.2 (mingw-special)

The problem is  "return -1" statement in
org.postgresql.jdbc2.AbstractJdbc2ResultSetMetaData.getPrecision():

        case Types.NUMERIC:
            Field f = getField(column);
            if (f != null)
            {
                // no specified precision or scale
                if (f.getMod() == -1)
                {
                    return -1;
                }
                return ((0xFFFF0000)&f.getMod()) >> 16;
            }
            else
            {
                return 0;
            }

After I have pached getPrecision(), getScale() and getColumnDisplaySize() to
return 0 instead of negative value, my program works fine. I haven't find in
JDBC specification what those methods should return for
"unknown/unspecified", but other drivers (like JdbcOdbcDriver) returns 0.

Nebojsa Vasiljevic


pgsql-jdbc by date:

Previous
From: Syed Abdul Nasir
Date:
Subject: Fwd: Problem with deleting row
Next
From: Kris Jurka
Date:
Subject: Re: Crystal Reports / PostgreSQL