Attached is patch to fix this problem. The driver was using the wrong
column from it's query to determine the size and digits of the result.
Kris Jurka
On Thu, 6 Feb 2003, Donald J. Armstrong wrote:
> Greetings,
>
> My first post.
>
> I am attempting to describe the table "donnie" from JDBC and I'm unable
> to determine the precision and scale of numeric types. I've tried the
> stable and beta versions of the JDBC driver and receive same behavior.
>
> DB version string
> PostgreSQL 7.2.3 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.2
> 20020903 (Red Hat Linux 8.0 3.2-7)
>
> I'm using the following code...
>
> try {
> DatabaseMetaData dbms = basicCon.driverConnection.getMetaData();
> ResultSet columnNames;
> columnNames = dbms.getColumns(null, null, "donnie", null);
>
> while (columnNames.next()) {
> System.out.print(columnNames.getString("COLUMN_NAME") + " ");
>
> switch (columnNames.getInt("DATA_TYPE")) {
> case java.sql.Types.INTEGER:
> System.out.print("INTEGER");
> break;
> case java.sql.Types.VARCHAR:
> System.out.print("VARCHAR (");
> System.out.print(columnNames.getInt("COLUMN_SIZE") + ")");
> break;
> case java.sql.Types.NUMERIC:
> System.out.print("NUMERIC (");
> System.out.print(columnNames.getInt("COLUMN_SIZE") + ",");
> System.out.print(columnNames.getInt("DECIMAL_DIGITS") +
> ")");
> break;
> }
>
> System.out.println("");
> }
>
> } catch (SQLException e) {
> System.out.print(e);
> }
> }
>
> The output from the java program
> a INTEGER
> b VARCHAR (100)
> c NUMERIC (65535,65535)
> d NUMERIC (0,0)
> The description from pgsql
> Table "donnie"
> Column | Type | Modifiers
> --------+------------------------+-----------
> a | integer |
> b | character varying(100) |
> c | numeric(7,3) |
> d | numeric(12,4) |
>
> Any help?
> Donnie
>