Re: Fetching rows from a cursor returned by a stored function - Mailing list pgsql-jdbc

From Oliver Jowett
Subject Re: Fetching rows from a cursor returned by a stored function
Date
Msg-id 414B6B45.20900@opencloud.com
Whole thread Raw
In response to Fetching rows from a cursor returned by a stored function  (James Ireland <james@halfcab.com>)
Responses Re: Fetching rows from a cursor returned by a stored function  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-jdbc
James Ireland wrote:
> Hi everybody
>
> I have a stored function that returns a large number of rows as a
> cursor.  I am trying to prevent the entire result set being returned at
> once.  The code fragment below hits an OutOfMemoryError on the
> "while(resultSet.next())" line, which I believe is for this reason.

Unfortunately the current driver does not support cursor-based retrieval
for functions that return refcursors: it grabs the whole resultset at
once when the refcursor is retrieved as Types.OTHER.

If you don't mind the ugliness, you could register the result parameter
as Types.VARCHAR; that will give you a cursor name that you can then use
to execute FETCH queries yourself.

It might even work to execute FETCH FORWARD ALL for the cursor with a
non-zero fetchsize (and let the driver manage incremental fetches) but
I'm not sure what the behaviour of a non-zero row limit on a FETCH query
is at the protocol level..

-O

pgsql-jdbc by date:

Previous
From: James Ireland
Date:
Subject: Fetching rows from a cursor returned by a stored function
Next
From: Tom Lane
Date:
Subject: Re: Fetching rows from a cursor returned by a stored function