Re: ResultSet with more than 5 rows causes error - Mailing list pgsql-jdbc

From Kris Jurka
Subject Re: ResultSet with more than 5 rows causes error
Date
Msg-id Pine.BSO.4.64.0710010309130.30230@leary.csoft.net
Whole thread Raw
In response to Re: ResultSet with more than 5 rows causes error  ("Ludovico Bianchini" <metlud@yahoo.it>)
Responses Re: ResultSet with more than 5 rows causes error  (Kris Jurka <books@ejurka.com>)
List pgsql-jdbc

On Thu, 27 Sep 2007, Ludovico Bianchini wrote:

> Sorry, the error does not seem to be in the ResultSet but instead in the
> Callable Statement, method execute().
>
> java.lang.NullPointerException
>        at
> org.postgresql.core.v3.SimpleParameterList.getV3Length(SimpleParameterList.java:228)
>        at
> org.postgresql.core.v3.QueryExecutorImpl.sendBind(QueryExecutorImpl.java:807)
>        at

I've managed to reproduce this problem with the attached test case.
At fault are the ill conceived side effects in
org.postgresql.core.v3.SimpleParameterList#getTypeOID.  An accessor
like getTypeOID shouldn't be responsible for setting a value for the
out parameter.  getTypeOID is called from QueryExecutorImpl's
sendParse method, which obviously isn't called when we reuse a server
side prepared statement and don't need to reparse.  This leaves an
uninitialized value in the paramValues array which we die on later.

How can overriding things in getTypeOID be wise without doing the
same overriding in getTypeOIDs?  In any case that all seems like the
wrong approach.  It would be ideal to be able to handle all of this in
registerOutParameter, but that is tricky for INOUT parameters which
can come from two places in either order.  What about putting all the
oid/value hacking into checkAllParametersSet which we can be sure will
be called?

It won't get called for describe only executions, which doing a
little testing doesn't seem to work for CallableStatements in the
first place.  Maybe for clarity a separate method should be added to
SimpleParameterList to do the OUT parameter mashing.

Dave, your thoughts?

Kris Jurka

Attachment

pgsql-jdbc by date:

Previous
From: Oliver Jowett
Date:
Subject: Re: Prepared Statements vs. pgbouncer
Next
From: Kris Jurka
Date:
Subject: Re: rs.getBigDecimal returning Null on field that is not null