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 ?.
|
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: