Re: [PATCHES] Anoter JDBC Error

From: Dave Cramer <Dave(at)micro-automation(dot)net>
To: Aaron Mulder <ammulder(at)alumni(dot)princeton(dot)edu>
Cc: PostgreSQL JDBC <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: [PATCHES] Anoter JDBC Error
Date: 2002-10-21 00:04:24
Message-ID: 1035158665.1868.70.camel@inspiron.cramers
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc pgsql-patches

Aaron,

To answer one question about what getFixedString is doing there,
everything from the server is a string, (except binary values) integers,
floats, longs, dates, etc.

As far as the getInteger(9) goes this is quite likely a bug.

Dave
On Sat, 2002-10-19 at 19:36, Aaron Mulder wrote:
> Ahh, never mind. I tried again a few minutes later, and got the
> new behavior, which is to say a SQLException. But I don't
> understand why this is happening. Here's what I'm doing:
>
> I create the database "test" (in my PG 7.2.2 DB) with a table with
> 3 columns, all integers. I connect using the JDBC3 driver, get a
> connection, get the databasemetadata, call
>
> dbmd.getColumns("test",null,"tablename","%");
>
> I get back a ResultSet. Column 9 is an integer column,
> DECIMAL_DIGITS. If I call getObject, it tries to get an Integer object,
> so even the ResultSet thinks it's an integer column. However, the result
> of getString/getFixedString used for new Integer(getFixedString()) is
> apparently an empty String, causing the SQLException due to a badly
> formatted Integer value.
>
> So now I'm confused. What's an empty String doing in an integer
> column when (if you believe the logic in getFixedString) the value was not
> null? Is this broken null handling? Test program and results attached...
>
> Aaron
>
> import java.sql.*;
>
> public class PostgresTest{
> public static void main(String args[]) {
> try {
> Class.forName("org.postgresql.Driver");
> Connection con =
> DriverManager.getConnection("jdbc:postgresql://localhost/test", "test",
> "password");
> DatabaseMetaData dmd = con.getMetaData();
> ResultSet rs = dmd.getColumns("test", null, "tablename", "%");
> rs.next();
> System.out.println("Col 9: "+rs.getInt(9)); // getObject(9)
> rs.close();
> con.close();
> } catch(Exception e) {
> e.printStackTrace();
> }
> }
> }
>
>
> Bad Integer
> at
> org.postgresql.jdbc1.AbstractJdbc1ResultSet.toInt(AbstractJdbc1ResultSet.java:708)
> at
> org.postgresql.jdbc1.AbstractJdbc1ResultSet.getInt(AbstractJdbc1ResultSet.java:148)
> at PostgresTest.main(PostgresTest.java:12)
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org
>
>

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Teofilis Martisius 2002-10-21 03:33:07 Re: new String(byte[]) performance
Previous Message Nic Ferrier 2002-10-20 18:29:07 Re: Scrollable result sets

Browse pgsql-patches by date

  From Date Subject
Next Message Bruce Momjian 2002-10-21 01:17:43 Re: PL/Python documentation
Previous Message Nigel J. Andrews 2002-10-20 23:23:29 PL/Python documentation