Re: ResultSet storing all rows with defaulftFetchSize to 5000

From: Brad DeJong <bpd0018(at)gmail(dot)com>
To: Jaime Soler <jaime(dot)soler(at)gmail(dot)com>
Cc: List <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: ResultSet storing all rows with defaulftFetchSize to 5000
Date: 2018-02-09 00:13:17
Message-ID: CAJnrtnwzjFApwFVpyz=Fc7=d_VaZFTyoMrJ3PO_qf5+OWo-p2w@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

On Wed, Feb 7, 2018 at 1:00 PM, Jaime Soler <jaime(dot)soler(at)gmail(dot)com> wrote:

> ... ResultSet holdability is HOLD_CURSOR_OVER_COMMIT. ...
> And the postgresql comunity jdbc driver 9.4 documentation said:
> "... There are a number of restrictions which will make the driver
> silently fall back to fetch the whole ResultSet ..."
>
>
And the statement must be created with a ResultSet holdability of
CLOSE_CURSORS_AT_COMMIT - which is not documented.
https://github.com/pgjdbc/pgjdbc/pull/1105 submitted to fix that.

The relevant code fragment from org.postgresql.jdbc.PgStatement.java is ...

// Enable cursor-based resultset if possible.
if (fetchSize > 0 && !wantsScrollableResultSet() &&
!connection.getAutoCommit()
&& !wantsHoldableResultSet()) {
flags |= QueryExecutor.QUERY_FORWARD_CURSOR;
}

And the fragment from org.postgresql.v3.QueryExecutorImpl.java ...

boolean usePortal = (flags & QueryExecutor.QUERY_FORWARD_CURSOR) != 0
&& !noResults && !noMeta
&& fetchSize > 0 && !describeOnly;

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Alan Stange 2018-02-09 18:51:45 setFetchSize() and preferQueryMode incompatible?
Previous Message Jaime Soler 2018-02-07 19:00:02 ResultSet storing all rows with defaulftFetchSize to 5000