You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by Army <qo...@sbcglobal.net> on 2005/08/05 23:54:21 UTC
Result set holdability defined inside stored procedures is ignored
by server/client
Assume I have a Java stored procedure that returns one or more result sets, and
the holdability of those result sets is specified as part of the
createStatement() method within the procedure definition (see below for an example).
If I execute this procedure against Derby embedded, the holdability of each
result set matches that of the statement-specific holdability that is defined
within the stored procedure. However, if I run the procedure against the
Network Server using the Derby client, the holdability of _all_ result sets is
the same, and it is based on the holdability of the statement that _executed_
the procedure--i.e. the statement-specific holdability that is defined within
the procedure is ignored.
Does anyone know if this is a bug with the server/client, or is it just another
difference between embedded mode and server mode that needs to be documented?
Ex: If I create a stored procedure that corresponds to the following method:
public static void p2(ResultSet[] rs1, ResultSet[] rs2,
ResultSet[] rs3) throws Exception
{
Connection conn = DriverManager.getConnection(
"jdbc:default:connection");
Statement st1 = conn.createStatement(
ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_READ_ONLY,
ResultSet.HOLD_CURSORS_OVER_COMMIT);
rs1[0] = st1.executeQuery("select * from testtable1");
Statement st2 = conn.createStatement(
ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_READ_ONLY,
ResultSet.CLOSE_CURSORS_AT_COMMIT);
rs2[0] = st2.executeQuery("select * from testtable2");
Statement st3 = conn.createStatement(
ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_READ_ONLY,
ResultSet.HOLD_CURSORS_OVER_COMMIT);
rs3[0] = st3.executeQuery("select * from testtable3");
return;
}
}
Then with Derby embedded, if I have a JDBC Statement that executes a call to
this procedure, rs1 and rs3 will have HOLD_CURSORS holdability and rs2 will have
CLOSE_CURSORS holdability--and that will be the case regardless of the
holdability on the Statement that executed the call. That seems correct to me.
But if I do the same thing with Network Server, all of the result sets (rs1,
rs2, and rs3) will have the same holdability as the JDBC Statement that executed
the call. It doesn't matter what the holdabilities used within the procedure
definition are: they will all be over-ridden by the holdability of the Statement
that made the call. Am I correct in thinking that's a bug?
I searched through Jira but didn't see this issue mentioned anywhere (there were
a couple that sounded sort of similar (ex. DERBY-8), but they were for XA
connections). If I can get confirmation that this is indeed a bug (as opposed
to a difference between embedded and server modes that just needs to be
documented), I will create a new Jira entry for it...
Thanks for any feedback/input,
Army
Re: Result set holdability defined inside stored procedures is ignored
by server/client
Posted by Army <qo...@sbcglobal.net>.
Kathey Marsden wrote:
> Army wrote:
>
>
>>Assume I have a Java stored procedure that returns one or more result
>>sets, and the holdability of those result sets is specified as part of
>>the createStatement() method within the procedure definition (see
>>below for an example).
>>
>
> [snip .. details]
>
> I think this sounds like a bug. I have not heard of it before.
>
> Kathey
Thanks for the reply, Kathey. I've filed DERBY-498 and have attached a repro to
that issue.
Army
Re: Result set holdability defined inside stored procedures is ignored
by server/client
Posted by Kathey Marsden <km...@sbcglobal.net>.
Army wrote:
> Assume I have a Java stored procedure that returns one or more result
> sets, and the holdability of those result sets is specified as part of
> the createStatement() method within the procedure definition (see
> below for an example).
>
[snip .. details]
>
> I searched through Jira but didn't see this issue mentioned anywhere
> (there were a couple that sounded sort of similar (ex. DERBY-8), but
> they were for XA connections). If I can get confirmation that this is
> indeed a bug (as opposed to a difference between embedded and server
> modes that just needs to be documented), I will create a new Jira
> entry for it...
>
I think this sounds like a bug. I have not heard of it before.
Kathey