Re: Patch for jdbc2 ResultSet.java - Mailing list pgsql-jdbc


Barry Lind wrote:
> Joseph,
>
> In looking at this patch it looks OK, except for the following change:
>
>  > !         if (index>=-rows.size())
>  > --- 725,737 ----
>  > !         if (index > rows_size)
>
> I haven't looked at the entire method, but the change you made seems
> incorrect.
>
Oops!  Thanks for catching that.  Cut and paste error.  I hate those.

> If you want this patch to be applied it should be sent to the
> pgsql-patches mail list.


I thought that jdbc stuff was preferred to be on the jdbc list.  I guess not.

new patch:


*** ResultSet.java.orig    Tue Sep  4 16:34:14 2001
--- ResultSet.java    Wed Sep  5 15:35:59 2001
***************
*** 134,140 ****
     {
       //release resources held (memory for tuples)
       if(rows!=null) {
-       rows.setSize(0);
         rows=null;
       }
     }
--- 134,139 ----
***************
*** 709,716 ****
     public int findColumn(String columnName) throws SQLException
     {
       int i;
!
!     for (i = 0 ; i < fields.length; ++i)
         if (fields[i].getName().equalsIgnoreCase(columnName))
       return (i+1);
       throw new PSQLException ("postgresql.res.colname",columnName);
--- 708,715 ----
     public int findColumn(String columnName) throws SQLException
     {
       int i;
!     final int flen = fields.length;
!     for (i = 0 ; i < flen; ++i)
         if (fields[i].getName().equalsIgnoreCase(columnName))
       return (i+1);
       throw new PSQLException ("postgresql.res.colname",columnName);
***************
*** 726,736 ****
       if (index==0)
           throw new SQLException("Cannot move to index of 0");

       //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 {
           beforeFirst();
           return false;
--- 725,737 ----
       if (index==0)
           throw new SQLException("Cannot move to index of 0");

+     final int rows_size = rows.size();
+
       //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 {
           beforeFirst();
           return false;
***************
*** 739,745 ****
       //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();
--- 740,746 ----
       //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();
***************
*** 753,760 ****

       public void afterLast() throws SQLException
       {
!     if (rows.size() > 0)
!         current_row = rows.size();
       }

       public void beforeFirst() throws SQLException
--- 754,762 ----

       public void afterLast() throws SQLException
       {
!     final int rows_size = rows.size();
!     if (rows_size > 0)
!         current_row = rows_size;
       }

       public void beforeFirst() throws SQLException
***************
*** 967,973 ****

       public boolean isAfterLast() throws SQLException
       {
!     return (current_row >= rows.size()  && rows.size() > 0);
       }

       public boolean isBeforeFirst() throws SQLException
--- 969,976 ----

       public boolean isAfterLast() throws SQLException
       {
!     final int rows_size = rows.size();
!     return (current_row >= rows_size && rows_size > 0);
       }

       public boolean isBeforeFirst() throws SQLException
***************
*** 982,995 ****

       public boolean isLast() throws SQLException
       {
!     return (current_row == rows.size() -1  && rows.size() > 0);
       }

       public boolean last() throws SQLException
       {
!     if (rows.size() <= 0)
           return false;
!     current_row = rows.size() - 1;
       this_row = (byte [][])rows.elementAt(current_row);
       return true;
       }
--- 985,1000 ----

       public boolean isLast() throws SQLException
       {
!     final int rows_size = rows.size();
!     return (current_row == rows_size -1  && rows_size > 0);
       }

       public boolean last() throws SQLException
       {
!     final int rows_size = rows.size();
!     if (rows_size <= 0)
           return false;
!     current_row = rows_size - 1;
       this_row = (byte [][])rows.elementAt(current_row);
       return true;
       }
***************
*** 1480,1483 ****
           }
       }
   }
-
--- 1485,1487 ----







--
Joseph Shraibman
jks@selectacast.net
Increase signal to noise ratio.  http://www.targabot.com


pgsql-jdbc by date:

Previous
From: Barry Lind
Date:
Subject: Re: Re: Proposal to fix Statement.executeBatch()
Next
From: Barry Lind
Date:
Subject: Re: Read transactions don't work on 7.0.x db's 2nd patch