|
Home > Archive > PostgreSQL JDBC > July 2005 > No. of rows on result set
You are viewing an archived Text-only version of the thread.
To view this thread in it's original format and/or if you want to reply to
this thread please [click here]
| Author |
No. of rows on result set
|
|
| Dianne Yumul 2005-07-14, 8:24 pm |
| Hello List,
Recently upgraded to Postgresql 8.0.3, JDBC Driver 8.0 Build 311 and
realized that I can no longer use the last() method for ResultSet
because of the default TYPE_FORWARD_ONLY. Several of our apps use this
to find the number of rows on a result set. Looking at the archives, my
options would be to (1) do a separate SELECT COUNT(*) . . ., (2) change
result set type to TYPE_SCROLL_INSENSIT
IVE, (3) replace arrays with
something else that will not require the size of the result set, or (4)
a better solution I haven't thought of : ).
Sorry for the newbie question. I'm inclined to just use
TYPE_SCROLL_INSENSIT
IVE, but I want to do this the right way (not just
the easy way) and I'm not sure if it has any repercussions.
Thank you very much.
dianne
---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?
http://archives.postgresql.org
| |
| Oliver Jowett 2005-07-14, 8:24 pm |
| Dianne Yumul wrote:
> Hello List,
>
> Recently upgraded to Postgresql 8.0.3, JDBC Driver 8.0 Build 311 and
> realized that I can no longer use the last() method for ResultSet
> because of the default TYPE_FORWARD_ONLY.
Right, you're not meant to use last() on TYPE_FORWARD_ONLY per the JDBC
spec, and the driver implementation now means we can't support it..
> Several of our apps use this
> to find the number of rows on a result set. Looking at the archives, my
> options would be to (1) do a separate SELECT COUNT(*) . . ., (2) change
> result set type to TYPE_SCROLL_INSENSIT
IVE, (3) replace arrays with
> something else that will not require the size of the result set, or (4)
> a better solution I haven't thought of : ).
If you need to use last(), then TYPE_SCROLL_INSENSIT
IVE is the way to go.
Note that this means the driver will retrieve the entire resultset in
one go rather than possibly using cursors (if you've set fetchsize and
have autocommit off) -- you might have problems with big resultsets. If
so I'd go with COUNT.
-O
---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend
| |
| Dianne Yumul 2005-07-15, 11:23 am |
| On Jul 14, 2005, at 5:10 PM, Oliver Jowett wrote:
> If you need to use last(), then TYPE_SCROLL_INSENSIT
IVE is the way to
> go.
>
> Note that this means the driver will retrieve the entire resultset in
> one go rather than possibly using cursors (if you've set fetchsize and
> have autocommit off) -- you might have problems with big resultsets. If
> so I'd go with COUNT.
Ok, looking at the apps, the query either returns one row or a large
resultset. But using TYPE_SCROLL_INSENSIT
IVE should not be a problem
because fetchsize is not set and autocommit is not off.
Thank you so much for the great help.
Dianne
---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend
|
|
|
|
|