Re: Bug in setFetchSize

Lists: pgsql-jdbc
From: Dave Smith <dave(dot)smith(at)candata(dot)com>
To: pgsql-jdbc(at)postgresql(dot)org
Subject: Bug in setFetchSize
Date: 2004-12-02 16:32:19
Message-ID: 1102005138.4563.9.camel@playpen.candata.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

We are using pg80b1.308.jdbc3.jar with pg 7.4.5 and trying to use
setFetchSize on Statement.

Once we try and fetch outside the value we have set for fetchSize we get
ERROR: portal "C_4" does not exist

So it looks like you are using fetchSize as an absolute size, which is
not my reading of the spec.

--
Dave Smith
CANdata Systems Ltd
416-493-9020


From: Oliver Jowett <oliver(at)opencloud(dot)com>
To: Dave Smith <dave(dot)smith(at)candata(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Bug in setFetchSize
Date: 2004-12-02 21:20:39
Message-ID: 41AF8727.90404@opencloud.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

Dave Smith wrote:
> We are using pg80b1.308.jdbc3.jar with pg 7.4.5 and trying to use
> setFetchSize on Statement.
>
> Once we try and fetch outside the value we have set for fetchSize we get
> ERROR: portal "C_4" does not exist

The only case I can think of this happening is if you are trying to use
a ResultSet after the transaction that created it has committed or
rolled back.

You're not meant to do that unless you specify HOLD_CURSORS_OVER_COMMIT
(which the driver will currently reject as unsupported). The driver does
not explicitly close ResultSets on commit, but the server closes the
underlying cursor so you see this error.

If that's not the scenario, can you provide some sample code that
demonstrates the problem?

> So it looks like you are using fetchSize as an absolute size, which is
> not my reading of the spec.

I don't understand your analysis.

-O


From: Dave Smith <dave(dot)smith(at)candata(dot)com>
To: Oliver Jowett <oliver(at)opencloud(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Bug in setFetchSize
Date: 2004-12-03 14:13:20
Message-ID: 1102083199.6713.3.camel@playpen.candata.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

Does it matter if the setAutoCommit is true or false .. or is it just an
explicit commit(); call that would close the portal?

On Fri, 2004-12-03 at 05:20, Oliver Jowett wrote:
> Dave Smith wrote:
> > We are using pg80b1.308.jdbc3.jar with pg 7.4.5 and trying to use
> > setFetchSize on Statement.
> >
> > Once we try and fetch outside the value we have set for fetchSize we get
> > ERROR: portal "C_4" does not exist
>
> The only case I can think of this happening is if you are trying to use
> a ResultSet after the transaction that created it has committed or
> rolled back.
>
> You're not meant to do that unless you specify HOLD_CURSORS_OVER_COMMIT
> (which the driver will currently reject as unsupported). The driver does
> not explicitly close ResultSets on commit, but the server closes the
> underlying cursor so you see this error.
>
> If that's not the scenario, can you provide some sample code that
> demonstrates the problem?
>
> > So it looks like you are using fetchSize as an absolute size, which is
> > not my reading of the spec.
>
> I don't understand your analysis.
>
> -O
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
> message can get through to the mailing list cleanly
--
Dave Smith
CANdata Systems Ltd
416-493-9020


From: Oliver Jowett <oliver(at)opencloud(dot)com>
To: Dave Smith <dave(dot)smith(at)candata(dot)com>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Re: Bug in setFetchSize
Date: 2004-12-03 20:40:34
Message-ID: 41B0CF42.3080907@opencloud.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc

Dave Smith wrote:
> Does it matter if the setAutoCommit is true or false .. or is it just an
> explicit commit(); call that would close the portal?

If autocommit is true then the driver shouldn't be using cursors at all
in theory (since they'd become invalid immediately).

Note that setAutoCommit() will do an implicit commit(), so if you're
running with autocommit off, doing some queries, calling setAutoCommit,
then trying to use the resultsets, then you will see similar problems.

Example code showing the problem?

-O