Re: extra rowcopy in ResultSet allways needed ?. - Mailing list pgsql-jdbc

From Gustav Trede
Subject Re: extra rowcopy in ResultSet allways needed ?.
Date
Msg-id 47BBF105.2030808@telia.com
Whole thread Raw
In response to Re: extra rowcopy in ResultSet allways needed ?.  (Kris Jurka <jurka@ejurka.com>)
Responses Re: extra rowcopy in ResultSet allways needed ?.  (Kris Jurka <books@ejurka.com>)
List pgsql-jdbc
here is diff from current cvs.
>
>>
>> I will do it for all methods that is not update methods.
>> doing it in one method and then call it.
>>
>> i just attach the new AbstractJdbc2ResultSet.java in an email or ?
>>
>
> A patch would be better.  If you've got cvs checkout, the "cvs diff
> -c" is what we'd like to see.
>
> Also, please keep replies on the list so other people can read/comment
> on your emails.
>
> Kris Jurka
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Have you searched our list archives?
>
>               http://archives.postgresql.org
>
> __________ Information from ESET NOD32 Antivirus, version of virus
> signature database 2880 (20080215) __________
>
> The message was checked by ESET NOD32 Antivirus.
>
> http://www.eset.com
>
>
>

Index: AbstractJdbc2ResultSet.java
===================================================================
RCS file: /cvsroot/jdbc/pgjdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java,v
retrieving revision 1.102
diff -c -r1.102 AbstractJdbc2ResultSet.java
*** AbstractJdbc2ResultSet.java    19 Feb 2008 06:12:24 -0000    1.102
--- AbstractJdbc2ResultSet.java    20 Feb 2008 08:08:16 -0000
***************
*** 250,259 ****
          }

          current_row = internalIndex;
!         this_row = (byte[][]) rows.elementAt(internalIndex);
!
!         rowBuffer = new byte[this_row.length][];
!         System.arraycopy(this_row, 0, rowBuffer, 0, this_row.length);
          onInsertRow = false;

          return true;
--- 250,256 ----
          }

          current_row = internalIndex;
!         initRowBuffer();
          onInsertRow = false;

          return true;
***************
*** 295,304 ****
              return false;

          current_row = 0;
!         this_row = (byte[][]) rows.elementAt(current_row);
!
!         rowBuffer = new byte[this_row.length][];
!         System.arraycopy(this_row, 0, rowBuffer, 0, this_row.length);
          onInsertRow = false;

          return true;
--- 292,298 ----
              return false;

          current_row = 0;
!         initRowBuffer();
          onInsertRow = false;

          return true;
***************
*** 629,638 ****
              return false;

          current_row = rows_size - 1;
!         this_row = (byte[][]) rows.elementAt(current_row);
!
!         rowBuffer = new byte[this_row.length][];
!         System.arraycopy(this_row, 0, rowBuffer, 0, this_row.length);
          onInsertRow = false;

          return true;
--- 623,629 ----
              return false;

          current_row = rows_size - 1;
!         initRowBuffer();
          onInsertRow = false;

          return true;
***************
*** 658,666 ****
          {
              current_row--;
          }
!         this_row = (byte[][]) rows.elementAt(current_row);
!         rowBuffer = new byte[this_row.length][];
!         System.arraycopy(this_row, 0, rowBuffer, 0, this_row.length);
          return true;
      }

--- 649,655 ----
          {
              current_row--;
          }
!         initRowBuffer();
          return true;
      }

***************
*** 877,886 ****
          }
          else
          {
!             this_row = (byte[][]) rows.elementAt(current_row);
!
!             rowBuffer = new byte[this_row.length][];
!             System.arraycopy(this_row, 0, rowBuffer, 0, this_row.length);
          }

          onInsertRow = false;
--- 866,872 ----
          }
          else
          {
!             initRowBuffer();
          }

          onInsertRow = false;
***************
*** 1858,1867 ****
              current_row++;
          }

!         this_row = (byte [][])rows.elementAt(current_row);
!
!         rowBuffer = new byte[this_row.length][];
!         System.arraycopy(this_row, 0, rowBuffer, 0, this_row.length);
          return true;
      }

--- 1844,1850 ----
              current_row++;
          }

!         initRowBuffer();
          return true;
      }

***************
*** 2808,2813 ****
--- 2791,2806 ----
          return 0;  // SQL NULL
      }

+     private void initRowBuffer(){
+         this_row = (byte[][]) rows.elementAt(current_row);
+         if (resultsetconcurrency == ResultSet.CONCUR_UPDATABLE) {
+             rowBuffer = new byte[this_row.length][];
+             System.arraycopy(this_row, 0, rowBuffer, 0, this_row.length);
+         }else{
+             rowBuffer = this_row;
+         }
+     }
+
      private boolean isColumnTrimmable(int columnIndex) throws SQLException
      {
          switch (getSQLType(columnIndex))

pgsql-jdbc by date:

Previous
From: Paul Tomblin
Date:
Subject: How to find what Java program has a transaction open?
Next
From:
Date:
Subject: Retrieving last InsertedID : INSERT... RETURNING safe ?