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))