summaryrefslogtreecommitdiff
path: root/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java
diff options
context:
space:
mode:
authorBarry Lind <barry@xythos.com>2001-11-14 04:11:37 +0000
committerBarry Lind <barry@xythos.com>2001-11-14 04:11:37 +0000
commitebb93323bbf7c62aeff283cd5991071ee8c575fa (patch)
tree22b370d8461b48acd90ae011e23c4ebbbca03b0f /src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java
parentc97a787e85df6bd6b7a6ff5cc35a75ec0601de7c (diff)
downloadpostgresql-ebb93323bbf7c62aeff283cd5991071ee8c575fa.tar.gz
Attached is a patch against the CVS repository that fixes the ResultSet absolute() problem.
There's also a little fix for the getRow() method. While fixing absolute(), I noticed that getRow() wasn't quite following the spec: it wasn't returning 0 when the ResultSet wasn't positioned on a row. I've started a ResultSet test case and included it as well. Liam Stewart
Diffstat (limited to 'src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java')
-rw-r--r--src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java b/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java
index c5a6429624..e98cef8660 100644
--- a/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java
+++ b/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java
@@ -836,6 +836,7 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu
//if index<0, count from the end of the result set, but check
//to be sure that it is not beyond the first index
if (index < 0)
+ {
if (index >= -rows_size)
internalIndex = rows_size + index;
else
@@ -843,16 +844,19 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu
beforeFirst();
return false;
}
-
- //must be the case that index>0,
- //find the correct place, assuming that
- //the index is not too large
- if (index <= rows_size)
- internalIndex = index - 1;
+ }
else
{
- afterLast();
- return false;
+ //must be the case that index>0,
+ //find the correct place, assuming that
+ //the index is not too large
+ if (index <= rows_size)
+ internalIndex = index - 1;
+ else
+ {
+ afterLast();
+ return false;
+ }
}
current_row = internalIndex;
@@ -1074,6 +1078,11 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu
public int getRow() throws SQLException
{
+ final int rows_size = rows.size();
+
+ if (current_row < 0 || current_row >= rows_size)
+ return 0;
+
return current_row + 1;
}