Re: bug in jdbc - Mailing list pgsql-jdbc

From dmp
Subject Re: bug in jdbc
Date
Msg-id 4E63AA4A.6010201@ttc-cmc.net
Whole thread Raw
In response to Re: bug in jdbc  (dmp <danap@ttc-cmc.net>)
List pgsql-jdbc
dmp wrote:
> luvar@plaintext.sk wrote:
>> Hi, I have executed some update query and I have requested to return
>> generated id...
>>
>> statement.executeUpdate(query, Statement.RETURN_GENERATED_KEYS);
>> ResultSet ids = statement.getGeneratedKeys();
>> ids.next();
>> ids.getInt(1);
>>
>> It will fail with this exception:
>>
>> 19:03:50,300 WARN ObjectBrowser:254 - Bad value for type int :
>> /home/luvar/output.svg
>> org.postgresql.util.PSQLException: Bad value for type int :
>> /home/luvar/output.svg
>> at
>> org.postgresql.jdbc2.AbstractJdbc2ResultSet.toInt(AbstractJdbc2ResultSet.java:2759)
>>
>> at
>> org.postgresql.jdbc2.AbstractJdbc2ResultSet.getInt(AbstractJdbc2ResultSet.java:2003)
>>
>> .....
>>
>>
>> I am using maven. Used jdbc version:
>>
>> <dependency>
>> <groupId>postgresql</groupId>
>> <artifactId>postgresql</artifactId>
>> <version>9.0-801.jdbc4</version>
>> </dependency>
>>
>> I have table constructed in such way, that id (bigserial typed) column
>> is NOT first column. It is second and first column of my table is
>> "url" column to which I try insert "/home/luvar/output.svg" value.
>>
>> Can you have a look and confirm this bug to me, or there is no bug and
>> something I am doing bad?
>>
>
> I have confirmed the behavior you have indicated in a test case that
> is not using Maven, but rather the JDBC directly.
>
> Though I have not reviewed the behavior of statement.executeUpdate(query,
> Statement.RETURN_GENERATED_KEYS) thoroughly I suggest you try the
> modifications that I made to your example code that helped me to understand
> more fully what is happening. I can not address if this is a bug or not.
>
> sqlStatement.executeUpdate(sqlStatementString,
> Statement.RETURN_GENERATED_KEYS);
> resultSet = sqlStatement.getGeneratedKeys();
> tableMetaData = resultSet.getMetaData();
> while (resultSet.next())
> {
> for (int i = 1; i < tableMetaData.getColumnCount() + 1; i++)
> {
> System.out.println(i + " " + tableMetaData.getColumnName(i));
> System.out.println(resultSet.getString(colNameString));
> }
> }
>
> Output:
> Connection Created
> INSERT INTO "public"."key_table21" ("text","id") VALUES ('aaa',33)
> 1 text
> aaa
> 2 id
> 33
> Connection Closed
>
> danap.
>
Sorry I made a simplification of the example code in the email that
obscured it.

while (resultSet.next())
{
    for (int i = 1; i < tableMetaData.getColumnCount() + 1; i++)
    {
       String colNameString = tableMetaData.getColumnName(i);
       System.out.println(i + " " + colNameString);
       System.out.println(resultSet.getString(colNameString));
    }
}

danap.

pgsql-jdbc by date:

Previous
From: dmp
Date:
Subject: Re: bug in jdbc
Next
From: Oliver Jowett
Date:
Subject: Re: bug in jdbc