Re: 8.4 vs 8.1 AbstractJdbc2Array - Array retrieval

From: Kris Jurka <books(at)ejurka(dot)com>
To: Andre Burkovski <AndreyMail(at)gmx(dot)net>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: 8.4 vs 8.1 AbstractJdbc2Array - Array retrieval
Date: 2010-05-17 18:06:08
Message-ID: alpine.BSO.2.00.1005171355410.25579@leary.csoft.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

On Mon, 17 May 2010, Andre Burkovski wrote:

> I have this unexpected Exception
> "org.postgresql.util.PSQLException: An I/O error occured while sending to the
> backend."
> when i try to recover contents of an java.sql.Array via getArray() method.
>
> I don't have an SSCCE (http://sscce.org/) yet, but for the same piece of code
> i tried both drivers: 8.1.414 and 8.4.701
> And for the 8.1.414 the code runs fine. For the 8.4.701 (jdbc3 and jdbc4
> variant) i got the error above.
>
> I did a little digging and debugging and found the following:
> The cause of the error can be found in line 165 of
> org.postgresql.jdbc2.AbstractJdbc2Array.java (8.4.701src)
> The the line
> "connection.getTypeInfo().getArrayDelimiter(oid);"
> requires the connection to be open.
> This is not the case for 8.1.414!
>
> This creates trouble, as i am using an ORM where data is cached. The data is
> available, but 8.4 driver requires the connection to be open. In the case of
> 8.1 driver the ORM is able to manage the retrieve the data via getArray()
> method although the connection is closed.

The change that was made between 8.1 and 8.4 was that in 8.1 the JDBC
driver assumed that the array delimiter would be a comma which is true for
most types, but not all. The 8.4 driver checks with the server to see
what the actual delimiter is.

So this change is intentional and the fact that you could access parts of
a ResultSet without a valid Connection is just luck. After Connection
close you really shouldn't be able to access anything.

Kris Jurka

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Sarkar, Sudipta 2010-05-17 20:02:21 Connection fails when the user name contains chinese characters
Previous Message Andre Burkovski 2010-05-17 17:41:02 8.4 vs 8.1 AbstractJdbc2Array - Array retrieval