diff options
author | Barry Lind <barry@xythos.com> | 2001-11-14 04:11:37 +0000 |
---|---|---|
committer | Barry Lind <barry@xythos.com> | 2001-11-14 04:11:37 +0000 |
commit | ebb93323bbf7c62aeff283cd5991071ee8c575fa (patch) | |
tree | 22b370d8461b48acd90ae011e23c4ebbbca03b0f /src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java | |
parent | c97a787e85df6bd6b7a6ff5cc35a75ec0601de7c (diff) | |
download | postgresql-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.java | 25 |
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; } |