Re: RE : Nmber of rows in a ResultSet

From: Kris Jurka <books(at)ejurka(dot)com>
To: Xavier Bugaud <xavier(dot)bugaud(at)gloptv(dot)com>
Cc: <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: RE : Nmber of rows in a ResultSet
Date: 2004-01-09 10:03:22
Message-ID: Pine.LNX.4.33.0401090454510.6759-100000@leary.csoft.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

On Fri, 9 Jan 2004, Xavier Bugaud wrote:

> > On Fri, 9 Jan 2004, Kris Jurka wrote:
> >
> > > In the last JDBC drivers, is there a means to get the number of rows
> > > directly (without using 'SELECT COUNT(*)' or
> > 'rs.last();rs.getrow();') ?
> >
> > I don't see what's so wrong with rs.last() and rs.getRow().
> >
>
> Thank you for the response.
>
> What is wrong with rs.last() and rs.getRow() is
> - it requires scrollable cursors in order to get back to the first row
> - it will certainly slow down the operation in case of huge amount of
> rows (I don't known how the Postgres driver handle that, so maybe this
> is wrong... I hope so)

In earlier versions of pg every row of a query was retrieved before any
user processing could occur. This meant that by default all ResultSets
were scrollable and rs.last() was pretty much free at that point.

Newer versions allow partial fetches from ResultSets via a cursor. This
only works on non-scrollable results and these cannot tell how many rows
are going to be in the final result until they have fetched them all.

This leaves you no worse of than you were before. You have the option of
retrieving all rows and counting them that way at the same expense you had
in previous versions.

Kris Jurka

In response to

Browse pgsql-jdbc by date

  From Date Subject
Next Message Csaba Nagy 2004-01-09 11:05:23 Re: [BUG] - Invalid UNICODE character sequence found
Previous Message Kris Jurka 2004-01-09 09:54:13 Re: [BUG] - Invalid UNICODE character sequence found