NPE sent by driver when ResultSet's connection is closed, proposed patch - Mailing list pgsql-jdbc

From Guillaume Cottenceau
Subject NPE sent by driver when ResultSet's connection is closed, proposed patch
Date
Msg-id 87k6rhl0ou.fsf@meuh.mnc.ch
Whole thread Raw
Responses Re: NPE sent by driver when ResultSet's connection is closed,  (Kris Jurka <books@ejurka.com>)
List pgsql-jdbc
Hi,

I am having some trouble with java.sql.ResultSet being "closed"
when it should not in our application, and it has shown what is I
think a bug in the driver.

When the ResultSet is "closed", and I fire #next, I receive an
SQLException complaining that the connection is closed. But when
I fire #first, I receive a NullPointerException from driver code,
which is incorrect since java.sql.ResultSet states that #first
only throws SQLException. I have seen this problem in stable
version but have verified in CVS code that it should still
happen, since the attribute "rows" is not tested for null value,
as is done in #next.

Follows a proposed patch, however from a quick reading of the
code I think there is more missing (#afterLast, #beforeFirst..)

--- postgres/pgjdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java    2004-11-19 04:18:51.000000000 +0100
+++ ./AbstractJdbc2ResultSet.java       2004-12-17 10:30:37.062117093 +0100
@@ -257,6 +257,9 @@

     public boolean first() throws SQLException
     {
+        if (rows == null)
+            throw new PSQLException(GT.tr("This ResultSet is closed."), PSQLState.CONNECTION_DOES_NOT_EXIST);
+
         checkScrollable();

         if (rows.size() <= 0)

--
Guillaume Cottenceau

pgsql-jdbc by date:

Previous
From: Kris Jurka
Date:
Subject: Re: [7.4.6] Escaping strings in text arrays passed through
Next
From: Kris Jurka
Date:
Subject: Re: NPE sent by driver when ResultSet's connection is closed,