Turn off scrollable cursors for the T4 driver

This is a port of the code from release 1.3 into release 2.0.  This resolves a
copyright issue until the code to support scrollable is implemented see JIRA:
  [TRAFODION-1786]
diff --git a/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/BaseRow.java b/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/BaseRow.java
deleted file mode 100644
index 3d28248..0000000
--- a/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/BaseRow.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// @@@ START COPYRIGHT @@@
-//
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-//
-// @@@ END COPYRIGHT @@@
-
-/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package org.trafodion.jdbc.t4;
-
-import java.io.Serializable;
-import java.sql.SQLException;
-
-abstract class BaseRow implements Serializable, Cloneable {
-
-	protected Object origVals[];
-
-	BaseRow() {
-	}
-
-	protected abstract Object getColumnObject(int i) throws SQLException;
-
-	protected Object[] getOrigRow() {
-		return origVals;
-	}
-
-	protected abstract void setColumnObject(int i, Object obj) throws SQLException;
-}
diff --git a/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/InsertRow.java b/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/InsertRow.java
deleted file mode 100644
index e569d20..0000000
--- a/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/InsertRow.java
+++ /dev/null
@@ -1,82 +0,0 @@
-// @@@ START COPYRIGHT @@@
-//
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-//
-// @@@ END COPYRIGHT @@@
-
-package org.trafodion.jdbc.t4;
-
-import java.io.Serializable;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.util.BitSet;
-
-class InsertRow extends BaseRow implements Serializable, Cloneable {
-
-	private BitSet colsInserted;
-	private int cols;
-
-	InsertRow(int i) {
-		origVals = new Object[i];
-		colsInserted = new BitSet(i);
-		cols = i;
-	}
-
-	protected Object getColumnObject(int i) throws SQLException {
-		if (!colsInserted.get(i - 1)) {
-			throw HPT4Messages.createSQLException(null, null, "no_column_value_specified", null);
-		} else {
-			return origVals[i - 1];
-		}
-	}
-
-	protected void initInsertRow() {
-		for (int i = 0; i < cols; i++) {
-			colsInserted.clear(i);
-
-		}
-	}
-
-	/*
-	 * protected boolean isCompleteRow(RowSetMetaData rowsetmetadata) throws
-	 * SQLException { for(int i = 0; i < cols; i++) if(!colsInserted.get(i) &&
-	 * rowsetmetadata.isNullable(i + 1) == 0) return false; return true; }
-	 */
-
-	protected void markColInserted(int i) {
-		colsInserted.set(i);
-	}
-
-	protected void setColumnObject(int i, Object obj) {
-		origVals[i - 1] = obj;
-		markColInserted(i - 1);
-	}
-
-	protected void insertRow(PreparedStatement insertStmt, BitSet paramCols) throws SQLException {
-		int i;
-		int j;
-
-		for (i = 0, j = 1; i < cols; i++) {
-			if (paramCols.get(i)) {
-				insertStmt.setObject(j++, origVals[i]);
-			}
-		}
-		insertStmt.execute();
-		initInsertRow();
-	}
-}
diff --git a/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/InterfaceResultSet.java b/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/InterfaceResultSet.java
index 0d7c0b4..8dbbc2f 100644
--- a/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/InterfaceResultSet.java
+++ b/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/InterfaceResultSet.java
@@ -583,8 +583,8 @@
 			throws SQLException
 
 	{
-		Row[] rowArray;
-		Object[] objectArray;
+		ObjectArray[] rowArray;
+		Object[] columnArray;
 		Object columnValue;
 
 		int columnCount;
@@ -595,7 +595,7 @@
 		int byteLen = 0;
 		int maxRowLen = rs.connection_.ic_.getTransportBufferSize(); // maxRowLen
 
-		rowArray = new Row[rowsAffected];
+		rowArray = new ObjectArray[rowsAffected];
 
 		// get the number of colums
 		columnCount = rs.getNoOfColumns();
@@ -607,7 +607,7 @@
 				String temp = "Reading row = " + rowIndex;
 				rs.connection_.props_.t4Logger_.logp(Level.FINEST, "InterfaceResultSet", "setFetchOutputs", temp, p);
 			}
-			objectArray = new Object[columnCount];
+			columnArray = new Object[columnCount];
 
 			for (columnIndex = 0; columnIndex < columnCount; columnIndex++) {
 				if (rs.connection_.props_.t4Logger_.isLoggable(Level.FINEST) == true) {
@@ -668,9 +668,9 @@
 					columnValue = null;
 
 				}
-				objectArray[columnIndex] = columnValue;
+				columnArray[columnIndex] = columnValue;
 			}
-			rowArray[rowIndex] = new Row(columnCount, objectArray);
+			rowArray[rowIndex] = new ObjectArray(columnCount, columnArray);
 		}
 		rs.setFetchOutputs(rowArray, rowsAffected, endOfData);
 	}
@@ -682,9 +682,9 @@
 			setFetchOutputs(rs, rowsAffected, endOfData, values);
 			return;
 		}
-		Object[] objectArray;
+		Object[] columnArray;
 		Object columnValue;
-		Row[] rowArray = new Row[rowsAffected];
+		ObjectArray[] rowArray = new ObjectArray[rowsAffected];
 
 		int columnCount = rs.getNoOfColumns();
 		int rowIndex;
@@ -694,7 +694,7 @@
 		int byteLen = 0;
 		int maxRowLen = rs.connection_.ic_.getTransportBufferSize(); // maxRowLen
 
-		objectArray = new Object[columnCount];
+		columnArray = new Object[columnCount];
 
 		int dataLength = 0;
 
@@ -734,10 +734,10 @@
 					}
 				} // end if else
 
-				objectArray[columnIndex] = columnValue;
+				columnArray[columnIndex] = columnValue;
 			} // end for
 
-			rowArray[rowIndex] = new Row(columnCount, objectArray);
+			rowArray[rowIndex] = new ObjectArray(columnCount, columnArray);
 		}
 		rs.setFetchOutputs(rowArray, rowsAffected, endOfData);
 
@@ -888,12 +888,12 @@
 	static Object[] getExecute2Outputs(TrafT4Connection conn, HPT4Desc[] desc, byte[] values, boolean swap) throws SQLException
 
 	{
-		Object[] objectArray;
+		Object[] columnArray;
 		Object columnValue;
 		int columnIndex;
 		int columnCount = (desc == null) ? 0 : desc.length;
 
-		objectArray = new Object[columnCount];
+		columnArray = new Object[columnCount];
 
 		for (columnIndex = 0; columnIndex < columnCount; columnIndex++) {
 			int noNullValueOffset = desc[columnIndex].noNullValue_;
@@ -917,10 +917,10 @@
 				}
 			} // end if else
 
-			objectArray[columnIndex] = columnValue;
+			columnArray[columnIndex] = columnValue;
 		} // end for
 
-		return objectArray;
+		return columnArray;
 
 	} // end getExectue2Outputs
 
diff --git a/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/ObjectArray.java b/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/ObjectArray.java
new file mode 100644
index 0000000..fd3f6ee
--- /dev/null
+++ b/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/ObjectArray.java
@@ -0,0 +1,86 @@
+// @@@ START COPYRIGHT @@@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+// @@@ END COPYRIGHT @@@
+
+package org.trafodion.jdbc.t4;
+
+import java.io.Serializable;
+import java.util.BitSet;
+
+
+// ****************************************************************************
+//  Class: ObjectArray
+//
+//  This class describes an array of Objects, a corresponding array of
+//  updated objects, and a bitmap containing the updated element positions
+//  It is used by TrafT4ResultSets to handle result set rows.
+// ****************************************************************************
+
+class ObjectArray implements Serializable, Cloneable {
+
+  // Class members
+  private BitSet arrayElements_;
+  private int    arraySize_;
+  private Object objectArray_[];
+  private Object updatedArray_[];
+
+  // Constructors
+  ObjectArray(int arraySize) {
+    arraySize_    = arraySize;
+    objectArray_  = new Object[arraySize];
+    updatedArray_ = new Object[arraySize];
+    
+    // Initializes bit map of elements to false
+    arrayElements_ = new BitSet(arraySize_);
+  }
+
+  ObjectArray(int arraySize, Object objectArray[]) {
+    arraySize_    = arraySize;
+    objectArray_  = new Object[arraySize];
+    updatedArray_ = new Object[arraySize];
+
+    // Initializes bit map of elements to false
+    arrayElements_ = new BitSet(arraySize_);
+
+    // populate object array with passed in object array
+    for (int idx = 0; idx < arraySize_; idx++) {
+      objectArray_[idx] = objectArray[idx];
+    }
+  }
+
+  // Helpers
+  protected int     getSize() { return arraySize_; }
+
+  protected Object getUpdatedArrayElement(int idx) {
+    if (arrayElements_ .get(idx - 1)) {
+      return updatedArray_[idx - 1];
+    } 
+    else {
+      return objectArray_[idx - 1];
+    }
+  }
+
+  protected void updateArrayElement(int idx, Object obj) { 
+    updatedArray_[idx - 1] = obj; 
+    arrayElements_.set(idx - 1);
+  }
+
+}
+
diff --git a/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/Row.java b/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/Row.java
deleted file mode 100644
index 21ee6f3..0000000
--- a/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/Row.java
+++ /dev/null
@@ -1,233 +0,0 @@
-// @@@ START COPYRIGHT @@@
-//
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-//
-// @@@ END COPYRIGHT @@@
-
-package org.trafodion.jdbc.t4;
-
-import java.io.Serializable;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-import java.util.BitSet;
-import java.util.Locale;
-
-// Referenced classes of package sun.jdbc.rowset:
-//            BaseRow
-
-class Row extends BaseRow implements Serializable, Cloneable {
-
-	private Object currentVals[];
-	private BitSet colsChanged;
-	private boolean deleted;
-	private boolean updated;
-	private boolean inserted;
-	private int numCols;
-
-	Row(int i) {
-		origVals = new Object[i];
-		currentVals = new Object[i];
-		colsChanged = new BitSet(i);
-		numCols = i;
-	}
-
-	Row(int i, Object aobj[]) {
-		origVals = new Object[i];
-		for (int j = 0; j < i; j++) {
-			origVals[j] = aobj[j];
-
-		}
-		currentVals = new Object[i];
-		colsChanged = new BitSet(i);
-		numCols = i;
-	}
-
-	protected void clearDeleted() {
-		deleted = false;
-	}
-
-	protected void clearInserted() {
-		inserted = false;
-	}
-
-	protected void clearUpdated() {
-		updated = false;
-		for (int i = 0; i < numCols; i++) {
-			currentVals[i] = null;
-			colsChanged.clear(i);
-		}
-
-	}
-
-	protected boolean getColUpdated(int i) {
-		return colsChanged.get(i);
-	}
-
-	protected Object getColumnObject(int i) throws SQLException {
-		if (getColUpdated(i - 1)) {
-			return currentVals[i - 1];
-		} else {
-			return origVals[i - 1];
-		}
-	}
-
-	protected boolean getDeleted() {
-		return deleted;
-	}
-
-	protected boolean getInserted() {
-		return inserted;
-	}
-
-	protected boolean getUpdated() {
-		return updated;
-	}
-
-	protected void initColumnObject(int i, Object obj) {
-		origVals[i - 1] = obj;
-	}
-
-	protected void moveCurrentToOrig() {
-		for (int i = 0; i < numCols; i++) {
-			if (getColUpdated(i)) {
-				origVals[i] = currentVals[i];
-				currentVals[i] = null;
-				colsChanged.clear(i);
-			}
-		}
-	}
-
-	private void setColUpdated(int i) {
-		colsChanged.set(i);
-	}
-
-	protected void setColumnObject(int i, Object obj) {
-		currentVals[i - 1] = obj;
-		setColUpdated(i - 1);
-	}
-
-	protected void setLobObject(int i, Object obj) {
-		currentVals[i - 1] = obj;
-		origVals[i - 1] = obj;
-	}
-
-	protected void setDeleted() {
-		deleted = true;
-	}
-
-	protected void setInserted() {
-		inserted = true;
-	}
-
-	protected void setUpdated() {
-		updated = true;
-	}
-
-	protected void deleteRow(Locale locale, PreparedStatement deleteStmt, BitSet paramCols) throws SQLException {
-		int i;
-		int j;
-		int count;
-
-		for (i = 0, j = 1; i < numCols; i++) {
-			if (paramCols.get(i)) {
-				deleteStmt.setObject(j++, origVals[i]);
-			}
-		}
-		count = deleteStmt.executeUpdate();
-		if (count == 0) {
-			throw HPT4Messages.createSQLException(null, locale, "row_modified", null);
-		}
-	}
-
-	protected void updateRow(Locale locale, PreparedStatement updateStmt, BitSet paramCols, BitSet keyCols)
-			throws SQLException {
-		int i;
-		int j;
-		int count;
-
-		for (i = 0, j = 1; i < numCols; i++) {
-			if (keyCols.get(i)) {
-				if (getColUpdated(i)) {
-					throw HPT4Messages.createSQLException(null, locale, "primary_key_not_updateable", null);
-				}
-			} else {
-				if (paramCols.get(i)) { // LOB Support SB 10/8/2004
-					Object obj = getColumnObject((i + 1));
-
-
-					updateStmt.setObject(j++, getColumnObject(i + 1));
-				}
-			}
-		}
-
-		for (i = 0; i < numCols; i++) {
-			// if (paramCols.get(i))
-			if (keyCols.get(i)) {
-				Object obj = origVals[i];
-
-
-				updateStmt.setObject(j++, origVals[i]);
-			}
-		}
-
-		count = updateStmt.executeUpdate();
-		if (count == 0) {
-			throw HPT4Messages.createSQLException(null, locale, "row_modified", null);
-		}
-		moveCurrentToOrig();
-		setUpdated();
-	}
-
-	protected void refreshRow(Locale locale, PreparedStatement selectStmt, BitSet selectCols, BitSet keyCols)
-			throws SQLException {
-		int i;
-		int j;
-		ResultSet rs;
-		ResultSetMetaData rsmd;
-		int columnCount;
-
-		clearUpdated();
-
-		for (i = 0, j = 1; i < numCols; i++) {
-			if (keyCols.get(i)) {
-				selectStmt.setObject(j++, origVals[i]);
-			}
-		}
-		rs = selectStmt.executeQuery();
-		if (rs != null) {
-			try {
-				rsmd = rs.getMetaData();
-				columnCount = rsmd.getColumnCount();
-				rs.next();
-				for (i = 0, j = 1; i < numCols; i++) {
-					if (selectCols.get(i)) {
-						origVals[i] = rs.getObject(j++);
-					}
-				}
-			} catch (SQLException ex) {
-				throw ex;
-			} finally {
-				rs.close();
-			}
-		}
-	}
-
-
-}
diff --git a/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/T4DatabaseMetaData.java b/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/T4DatabaseMetaData.java
index d3b916d..d691a82 100644
--- a/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/T4DatabaseMetaData.java
+++ b/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/T4DatabaseMetaData.java
@@ -3551,7 +3551,7 @@
 		}
 		TrafT4ResultSet resultSet;
 		HPT4Desc[] outputDesc;
-		Row[] rows;
+		ObjectArray[] rows;
 		String[] rowValue;
 
 		clearWarnings();
@@ -3563,19 +3563,19 @@
 				"TABLE_TYPE", false, Types.VARCHAR, (short) 0, (short) 0, 0, null, null, null, 100, 0, 0);
 
 		resultSet = new TrafT4ResultSet(this, outputDesc, "", true);
-		rows = new Row[3];
+		rows = new ObjectArray[3];
 
 		// Populate the rows
 		rowValue = new String[1];
 
 		rowValue[0] = new String("SYSTEM TABLE");
-		rows[0] = new Row(1, rowValue);
+		rows[0] = new ObjectArray(1, rowValue);
 
 		rowValue[0] = new String("TABLE");
-		rows[1] = new Row(1, rowValue);
+		rows[1] = new ObjectArray(1, rowValue);
 
 		rowValue[0] = new String("VIEW");
-		rows[2] = new Row(1, rowValue);
+		rows[2] = new ObjectArray(1, rowValue);
 
 		resultSet.setFetchOutputs(rows, 3, true);
 		return resultSet;
@@ -4919,7 +4919,7 @@
 		}
 		TrafT4ResultSet resultSet;
 		HPT4Desc[] outputDesc;
-		Row[] rows;
+		ObjectArray[] rows;
 
 		clearWarnings();
 		// connection_.getServerHandle().isConnectionOpen();
@@ -4942,7 +4942,7 @@
 				"BASE_TYPE", false, Types.SMALLINT, (short) 0, (short) 0, 0, null, null, null, 130, 0, 0);
 
 		resultSet = new TrafT4ResultSet(this, outputDesc, "", true);
-		rows = new Row[0];
+		rows = new ObjectArray[0];
 
 		// Populate the rows
 		resultSet.setFetchOutputs(rows, 0, true);
@@ -5273,7 +5273,7 @@
 		}
 		TrafT4ResultSet resultSet;
 		HPT4Desc[] outputDesc;
-		Row[] rows;
+		ObjectArray[] rows;
 
 		clearWarnings();
 		// connection_.getServerHandle().isConnectionOpen();
@@ -5294,7 +5294,7 @@
 				"SUPERTYPE_NAME", false, Types.VARCHAR, (short) 0, (short) 0, 0, null, null, null, 100, 0, 0);
 
 		resultSet = new TrafT4ResultSet(this, outputDesc, "", true);
-		rows = new Row[0];
+		rows = new ObjectArray[0];
 
 		// Populate the rows
 		resultSet.setFetchOutputs(rows, 0, true);
@@ -5318,7 +5318,7 @@
 		}
 		TrafT4ResultSet resultSet;
 		HPT4Desc[] outputDesc;
-		Row[] rows;
+		ObjectArray[] rows;
 
 		clearWarnings();
 		// connection_.getServerHandle().isConnectionOpen();
@@ -5335,7 +5335,7 @@
 				"SUPERTABLE_NAME", false, Types.VARCHAR, (short) 0, (short) 0, 0, null, null, null, 100, 0, 0);
 
 		resultSet = new TrafT4ResultSet(this, outputDesc, "", true);
-		rows = new Row[0];
+		rows = new ObjectArray[0];
 
 		// Populate the rows
 		resultSet.setFetchOutputs(rows, 0, true);
@@ -5363,7 +5363,7 @@
 		}
 		TrafT4ResultSet resultSet;
 		HPT4Desc[] outputDesc;
-		Row[] rows;
+		ObjectArray[] rows;
 
 		clearWarnings();
 		// connection_.getServerHandle().isConnectionOpen();
@@ -5414,7 +5414,7 @@
 				"SOURCE_DATA_TYPE", false, Types.SMALLINT, (short) 0, (short) 0, 0, null, null, null, 130, 0, 0);
 
 		resultSet = new TrafT4ResultSet(this, outputDesc, "", true);
-		rows = new Row[0];
+		rows = new ObjectArray[0];
 
 		// Populate the rows
 		resultSet.setFetchOutputs(rows, 0, true);
diff --git a/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/TrafT4PreparedStatement.java b/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/TrafT4PreparedStatement.java
index 489904f..0d4fe28 100644
--- a/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/TrafT4PreparedStatement.java
+++ b/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/TrafT4PreparedStatement.java
@@ -1924,7 +1924,7 @@
 	 * rowsAffected) throws SQLException { batchRowCount_ = new int[1];
 	 * batchRowCount_[0] = rowsAffected; if (outputDesc_ != null) { resultSet_ =
 	 * new TrafT4ResultSet(this, outputDesc_); } else { resultSet_ = null; } if
-	 * (rowsAffected == 0) { resultSet_.setFetchOutputs(new Row[0], 0, true, 0); }
+	 * (rowsAffected == 0) { resultSet_.setFetchOutputs(new ObjectRow[0], 0, true, 0); }
 	 * else { resultSet_.irs_.setSingletonFetchOutputs(resultSet_, rowsAffected,
 	 * true, 0, sqlValue_def_array); } }
 	 */
diff --git a/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/TrafT4ResultSet.java b/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/TrafT4ResultSet.java
index c181bee..b08d539 100644
--- a/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/TrafT4ResultSet.java
+++ b/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/TrafT4ResultSet.java
@@ -56,6 +56,10 @@
 import java.util.logging.Level;
 import java.util.logging.LogRecord;
 
+// ----------------------------------------------------------------------------
+// This class partially implements the result set class as defined in 
+// java.sql.ResultSet.  
+// ----------------------------------------------------------------------------
 public class TrafT4ResultSet extends HPT4Handle implements java.sql.ResultSet {
 
 	// java.sql.ResultSet interface methods
@@ -185,38 +189,10 @@
 		onInsertRow_ = false;
 	}
 
+        // Method not implemented
 	public void cancelRowUpdates() throws SQLException {
-		if (connection_.props_.t4Logger_.isLoggable(Level.FINE) == true) {
-			Object p[] = T4LoggingUtilities.makeParams(connection_.props_);
-			connection_.props_.t4Logger_.logp(Level.FINE, "TrafT4ResultSet", "cancelRowUpdates", "", p);
-		}
-		if (connection_.props_.getLogWriter() != null) {
-			LogRecord lr = new LogRecord(Level.FINE, "");
-			Object p[] = T4LoggingUtilities.makeParams(connection_.props_);
-			lr.setParameters(p);
-			lr.setSourceClassName("TrafT4ResultSet");
-			lr.setSourceMethodName("cancelRowUpdates");
-			T4LogFormatter lf = new T4LogFormatter();
-			String temp = lf.format(lr);
-			connection_.props_.getLogWriter().println(temp);
-		}
-		clearWarnings();
-		if (isClosed_) {
-			throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(), "invalid_cursor_state",
-					null);
-		}
-		if (getConcurrency() == ResultSet.CONCUR_READ_ONLY) {
-			throw HPT4Messages
-					.createSQLException(connection_.props_, connection_.getLocale(), "read_only_concur", null);
-		}
-		if (onInsertRow_) {
-			throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(),
-					"invalid_cursor_position", null);
-		}
-		Row row = (Row) getCurrentRow();
-		if (!row.getUpdated()) {
-			row.clearUpdated();
-		}
+             throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(),
+                  "cancelRowUpdates - not supported", null);
 	}
 
 	/**
@@ -257,68 +233,13 @@
 		}
 	}
 
+        // Method not implemented
 	public void deleteRow() throws SQLException {
-		if (connection_.props_.t4Logger_.isLoggable(Level.FINE) == true) {
-			Object p[] = T4LoggingUtilities.makeParams(connection_.props_);
-			connection_.props_.t4Logger_.logp(Level.FINE, "TrafT4ResultSet", "deleteRow", "", p);
-		}
-		if (connection_.props_.getLogWriter() != null) {
-			LogRecord lr = new LogRecord(Level.FINE, "");
-			Object p[] = T4LoggingUtilities.makeParams(connection_.props_);
-			lr.setParameters(p);
-			lr.setSourceClassName("TrafT4ResultSet");
-			lr.setSourceMethodName("deleteRow");
-			T4LogFormatter lf = new T4LogFormatter();
-			String temp = lf.format(lr);
-			connection_.props_.getLogWriter().println(temp);
-		}
-		clearWarnings();
-
-		if (isClosed_) {
-			throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(), "invalid_cursor_state",
-					null);
-		}
-		if (getConcurrency() == ResultSet.CONCUR_READ_ONLY) {
-			throw HPT4Messages
-					.createSQLException(connection_.props_, connection_.getLocale(), "read_only_concur", null);
-		}
-		if (onInsertRow_) {
-			throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(),
-					"invalid_cursor_position", null);
-		}
-
-
-		try {
-			prepareDeleteStmt();
-			Row row = (Row) getCurrentRow();
-			// Remove the row from database
-			row.deleteRow(connection_.getLocale(), deleteStmt_, paramCols_);
-			// Remove the row from the resultSet
-			cachedRows_.remove(--currentRow_);
-			--numRows_;
-
-			if ((getType() == ResultSet.TYPE_FORWARD_ONLY) && (getConcurrency() == ResultSet.CONCUR_UPDATABLE)) {
-				int temp;
-				temp = currentRowCount_;
-
-				if (!next()) {
-					if (temp == 1) {
-						isBeforeFirst_ = true;
-					}
-					currentRowCount_ = 0;
-				} else {
-					--currentRowCount_;
-				}
-			} else {
-				if (currentRow_ == 0) {
-					isBeforeFirst_ = true;
-				}
-			}
-		} catch (SQLException e) {
-			performConnectionErrorChecks(e);
-			throw e;
-		}
-	}
+            throw HPT4Messages.createSQLException(connection_.props_, 
+                                                  connection_.getLocale(),
+                                                  "deleteRow - not supported", 
+                                                  null);
+        }
 
 	public int findColumn(String columnName) throws SQLException {
 		if (connection_.props_.t4Logger_.isLoggable(Level.FINE) == true) {
@@ -845,7 +766,7 @@
 		case Types.BLOB:
 		case Types.CLOB:
 
-			Object x = getCurrentRow().getColumnObject(columnIndex);
+			Object x = getCurrentRow().getUpdatedArrayElement(columnIndex);
 			if (x == null) {
 				wasNull_ = true;
 				return null;
@@ -1880,11 +1801,11 @@
 		int targetSqlType;
 		int precision;
 		Object x;
-		BaseRow currentRow;
+		ObjectArray currentRow;
 
 		validateGetInvocation(columnIndex);
 		currentRow = getCurrentRow();
-		x = currentRow.getColumnObject(columnIndex);
+		x = currentRow.getUpdatedArrayElement(columnIndex);
 
 		if (x == null) {
 			wasNull_ = true;
@@ -2548,54 +2469,13 @@
 	}
 
 	// ------------------------------------------------------------------
+        // Method not implemented
 	public void insertRow() throws SQLException {
-		if (connection_.props_.t4Logger_.isLoggable(Level.FINE) == true) {
-			Object p[] = T4LoggingUtilities.makeParams(connection_.props_);
-			connection_.props_.t4Logger_.logp(Level.FINE, "TrafT4ResultSet", "insertRow", "", p);
-		}
-		if (connection_.props_.getLogWriter() != null) {
-			LogRecord lr = new LogRecord(Level.FINE, "");
-			Object p[] = T4LoggingUtilities.makeParams(connection_.props_);
-			lr.setParameters(p);
-			lr.setSourceClassName("TrafT4ResultSet");
-			lr.setSourceMethodName("insertRow");
-			T4LogFormatter lf = new T4LogFormatter();
-			String temp = lf.format(lr);
-			connection_.props_.getLogWriter().println(temp);
-		}
-		int i;
-
-		clearWarnings();
-		if (isClosed_) {
-			throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(), "invalid_cursor_state",
-					null);
-		}
-		if (getConcurrency() == ResultSet.CONCUR_READ_ONLY) {
-			throw HPT4Messages
-					.createSQLException(connection_.props_, connection_.getLocale(), "read_only_concur", null);
-		}
-		if (!onInsertRow_) {
-			throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(),
-					"invalid_cursor_position", null);
-		}
-
-		prepareInsertStmt();
-		InsertRow insertRow = (InsertRow) getCurrentRow();
-		// Insert the row into database
-		insertRow.insertRow(insertStmt_, paramCols_);
-		// Add the row to the resultSet
-		Row row = new Row(outputDesc_.length, insertRow.getOrigRow());
-		row.setInserted();
-		if (isBeforeFirst_ || isAfterLast_) {
-			i = currentRow_;
-		} else {
-			i = currentRow_ - 1;
-		}
-		cachedRows_.add(i, row);
-		numRows_++;
-
-
-	}
+           throw HPT4Messages.createSQLException(connection_.props_, 
+                                                 connection_.getLocale(),
+                                                 "insertRow - not supported", 
+                                                 null);
+        }
 
 	public boolean isAfterLast() throws SQLException {
 		if (connection_.props_.t4Logger_.isLoggable(Level.FINE) == true) {
@@ -2791,43 +2671,12 @@
 		}
 	}
 
+        // Method not implemented
 	public void moveToInsertRow() throws SQLException {
-		if (connection_.props_.t4Logger_.isLoggable(Level.FINE) == true) {
-			Object p[] = T4LoggingUtilities.makeParams(connection_.props_);
-			connection_.props_.t4Logger_.logp(Level.FINE, "TrafT4ResultSet", "moveToInsertRow", "", p);
-		}
-		if (connection_.props_.getLogWriter() != null) {
-			LogRecord lr = new LogRecord(Level.FINE, "");
-			Object p[] = T4LoggingUtilities.makeParams(connection_.props_);
-			lr.setParameters(p);
-			lr.setSourceClassName("TrafT4ResultSet");
-			lr.setSourceMethodName("moveToInsertRow");
-			T4LogFormatter lf = new T4LogFormatter();
-			String temp = lf.format(lr);
-			connection_.props_.getLogWriter().println(temp);
-		}
-		clearWarnings();
-		if (isClosed_) {
-			throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(), "invalid_cursor_state",
-					null);
-		}
-		if (getConcurrency() == ResultSet.CONCUR_READ_ONLY) {
-			throw HPT4Messages
-					.createSQLException(connection_.props_, connection_.getLocale(), "read_only_concur", null);
-		}
-
-
-		if (insertRow_ == null) {
-			if (outputDesc_.length > 0) {
-				insertRow_ = new InsertRow(outputDesc_.length);
-			}
-		}
-		if (insertRow_ != null) {
-			onInsertRow_ = true;
-			savedCurrentRow_ = currentRow_;
-			insertRow_.initInsertRow();
-		}
-
+           throw HPT4Messages.createSQLException(connection_.props_, 
+                                                 connection_.getLocale(),
+                                                 "moveToInsertRow - not supported", 
+                                                 null);
 	}
 
 	public boolean next() throws SQLException {
@@ -2956,41 +2805,14 @@
 			isAfterLast_ = false;
 		}
 		return validRow;
-	}
+        }
 
+        // Method not implemented
 	public void refreshRow() throws SQLException {
-		if (connection_.props_.t4Logger_.isLoggable(Level.FINE) == true) {
-			Object p[] = T4LoggingUtilities.makeParams(connection_.props_);
-			connection_.props_.t4Logger_.logp(Level.FINE, "TrafT4ResultSet", "refreshRow", "", p);
-		}
-		if (connection_.props_.getLogWriter() != null) {
-			LogRecord lr = new LogRecord(Level.FINE, "");
-			Object p[] = T4LoggingUtilities.makeParams(connection_.props_);
-			lr.setParameters(p);
-			lr.setSourceClassName("TrafT4ResultSet");
-			lr.setSourceMethodName("refreshRow");
-			T4LogFormatter lf = new T4LogFormatter();
-			String temp = lf.format(lr);
-			connection_.props_.getLogWriter().println(temp);
-		}
-
-		clearWarnings();
-		if (isClosed_) {
-			throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(), "invalid_cursor_state",
-					null);
-		}
-		if (onInsertRow_) {
-			throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(), "invalid_operation",
-					null);
-		}
-		prepareSelectStmt();
-		Row row = (Row) getCurrentRow();
-		try {
-			row.refreshRow(connection_.getLocale(), selectStmt_, paramCols_, keyCols_);
-		} catch (SQLException e) {
-			performConnectionErrorChecks(e);
-			throw e;
-		}
+           throw HPT4Messages.createSQLException(connection_.props_, 
+                                                 connection_.getLocale(),
+                                                 "refreshRow - not supported", 
+                                                 null);
 	}
 
 	public boolean relative(int row) throws SQLException {
@@ -3047,103 +2869,28 @@
 		return flag;
 	}
 
+        // Method not implemented
 	public boolean rowDeleted() throws SQLException {
-		if (connection_.props_.t4Logger_.isLoggable(Level.FINE) == true) {
-			Object p[] = T4LoggingUtilities.makeParams(connection_.props_);
-			connection_.props_.t4Logger_.logp(Level.FINE, "TrafT4ResultSet", "rowDeleted", "", p);
-		}
-		if (connection_.props_.getLogWriter() != null) {
-			LogRecord lr = new LogRecord(Level.FINE, "");
-			Object p[] = T4LoggingUtilities.makeParams(connection_.props_);
-			lr.setParameters(p);
-			lr.setSourceClassName("TrafT4ResultSet");
-			lr.setSourceMethodName("rowDeleted");
-			T4LogFormatter lf = new T4LogFormatter();
-			String temp = lf.format(lr);
-			connection_.props_.getLogWriter().println(temp);
-		}
-		BaseRow row;
-
-		if (isClosed_) {
-			throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(), "invalid_cursor_state",
-					null);
-		}
-		if (onInsertRow_) {
-			throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(), "invalid_operation",
-					null);
-		}
-		row = getCurrentRow();
-		if (row instanceof Row) {
-			return ((Row) row).getDeleted();
-		} else {
-			return false;
-		}
+           throw HPT4Messages.createSQLException(connection_.props_, 
+                                                 connection_.getLocale(),
+                                                 "rowDeleted - not supported", 
+                                                  null);
 	}
 
+        // Method not implemented
 	public boolean rowInserted() throws SQLException {
-		if (connection_.props_.t4Logger_.isLoggable(Level.FINE) == true) {
-			Object p[] = T4LoggingUtilities.makeParams(connection_.props_);
-			connection_.props_.t4Logger_.logp(Level.FINE, "TrafT4ResultSet", "rowInserted", "", p);
-		}
-		if (connection_.props_.getLogWriter() != null) {
-			LogRecord lr = new LogRecord(Level.FINE, "");
-			Object p[] = T4LoggingUtilities.makeParams(connection_.props_);
-			lr.setParameters(p);
-			lr.setSourceClassName("TrafT4ResultSet");
-			lr.setSourceMethodName("rowInserted");
-			T4LogFormatter lf = new T4LogFormatter();
-			String temp = lf.format(lr);
-			connection_.props_.getLogWriter().println(temp);
-		}
-		BaseRow row;
-
-		if (isClosed_) {
-			throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(), "invalid_cursor_state",
-					null);
-		}
-		if (onInsertRow_) {
-			throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(), "invalid_operation",
-					null);
-		}
-		row = getCurrentRow();
-		if (row instanceof Row) {
-			return ((Row) row).getInserted();
-		} else {
-			return false;
-		}
+           throw HPT4Messages.createSQLException(connection_.props_, 
+                                                 connection_.getLocale(),
+                                                 "rowInserted - not supported", 
+                                                  null);
 	}
 
+        // Method not implemented
 	public boolean rowUpdated() throws SQLException {
-		if (connection_.props_.t4Logger_.isLoggable(Level.FINE) == true) {
-			Object p[] = T4LoggingUtilities.makeParams(connection_.props_);
-			connection_.props_.t4Logger_.logp(Level.FINE, "TrafT4ResultSet", "rowUpdated", "", p);
-		}
-		if (connection_.props_.getLogWriter() != null) {
-			LogRecord lr = new LogRecord(Level.FINE, "");
-			Object p[] = T4LoggingUtilities.makeParams(connection_.props_);
-			lr.setParameters(p);
-			lr.setSourceClassName("TrafT4ResultSet");
-			lr.setSourceMethodName("rowUpdated");
-			T4LogFormatter lf = new T4LogFormatter();
-			String temp = lf.format(lr);
-			connection_.props_.getLogWriter().println(temp);
-		}
-		BaseRow row;
-
-		if (isClosed_) {
-			throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(), "invalid_cursor_state",
-					null);
-		}
-		if (onInsertRow_) {
-			throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(), "invalid_operation",
-					null);
-		}
-		row = getCurrentRow();
-		if (row instanceof Row) {
-			return ((Row) row).getUpdated();
-		} else {
-			return false;
-		}
+           throw HPT4Messages.createSQLException(connection_.props_, 
+                                                 connection_.getLocale(),
+                                                 "rowUpdated - not supported", 
+                                                  null);
 	}
 
 	public void setFetchDirection(int direction) throws SQLException {
@@ -3279,7 +3026,7 @@
 					messageArguments);
 		}
 		try {
-			getCurrentRow().setColumnObject(columnIndex, new String(value, "ASCII"));
+			getCurrentRow().updateArrayElement(columnIndex, new String(value, "ASCII"));
 		} catch (java.io.UnsupportedEncodingException e) {
 			Object[] messageArguments = new Object[1];
 			messageArguments[0] = e.getMessage();
@@ -3323,7 +3070,7 @@
 			connection_.props_.getLogWriter().println(temp);
 		}
 		validateUpdInvocation(columnIndex);
-		getCurrentRow().setColumnObject(columnIndex, x);
+		getCurrentRow().updateArrayElement(columnIndex, x);
 	}
 
 	public void updateBigDecimal(String columnName, BigDecimal x) throws SQLException {
@@ -3377,7 +3124,7 @@
 			throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(), "io_exception",
 					messageArguments);
 		}
-		getCurrentRow().setColumnObject(columnIndex, value);
+		getCurrentRow().updateArrayElement(columnIndex, value);
 	}
 
 	public void updateBinaryStream(String columnName, InputStream x, int length) throws SQLException {
@@ -3416,7 +3163,7 @@
 			connection_.props_.getLogWriter().println(temp);
 		}
 		validateUpdInvocation(columnIndex);
-		getCurrentRow().setColumnObject(columnIndex, new Boolean(x));
+		getCurrentRow().updateArrayElement(columnIndex, new Boolean(x));
 	}
 
 	public void updateBoolean(String columnName, boolean x) throws SQLException {
@@ -3454,7 +3201,7 @@
 			connection_.props_.getLogWriter().println(temp);
 		}
 		validateUpdInvocation(columnIndex);
-		getCurrentRow().setColumnObject(columnIndex, new Byte(x));
+		getCurrentRow().updateArrayElement(columnIndex, new Byte(x));
 	}
 
 	public void updateByte(String columnName, byte x) throws SQLException {
@@ -3492,7 +3239,7 @@
 			connection_.props_.getLogWriter().println(temp);
 		}
 		validateUpdInvocation(columnIndex);
-		getCurrentRow().setColumnObject(columnIndex, x);
+		getCurrentRow().updateArrayElement(columnIndex, x);
 	}
 
 	public void updateBytes(String columnName, byte[] x) throws SQLException {
@@ -3554,7 +3301,7 @@
 			throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(), "io_exception",
 					messageArguments);
 		}
-		getCurrentRow().setColumnObject(columnIndex, new String(value));
+		getCurrentRow().updateArrayElement(columnIndex, new String(value));
 	}
 
 	public void updateCharacterStream(String columnName, Reader x, int length) throws SQLException {
@@ -3592,7 +3339,7 @@
 			connection_.props_.getLogWriter().println(temp);
 		}
 		validateUpdInvocation(columnIndex);
-		getCurrentRow().setColumnObject(columnIndex, x);
+		getCurrentRow().updateArrayElement(columnIndex, x);
 	}
 
 	public void updateDate(String columnName, Date x) throws SQLException {
@@ -3630,7 +3377,7 @@
 			connection_.props_.getLogWriter().println(temp);
 		}
 		validateUpdInvocation(columnIndex);
-		getCurrentRow().setColumnObject(columnIndex, new Double(x));
+		getCurrentRow().updateArrayElement(columnIndex, new Double(x));
 	}
 
 	public void updateDouble(String columnName, double x) throws SQLException {
@@ -3668,7 +3415,7 @@
 			connection_.props_.getLogWriter().println(temp);
 		}
 		validateUpdInvocation(columnIndex);
-		getCurrentRow().setColumnObject(columnIndex, new Float(x));
+		getCurrentRow().updateArrayElement(columnIndex, new Float(x));
 	}
 
 	public void updateFloat(String columnName, float x) throws SQLException {
@@ -3706,7 +3453,7 @@
 			connection_.props_.getLogWriter().println(temp);
 		}
 		validateUpdInvocation(columnIndex);
-		getCurrentRow().setColumnObject(columnIndex, new Integer(x));
+		getCurrentRow().updateArrayElement(columnIndex, new Integer(x));
 	}
 
 	public void updateInt(String columnName, int x) throws SQLException {
@@ -3744,7 +3491,7 @@
 			connection_.props_.getLogWriter().println(temp);
 		}
 		validateUpdInvocation(columnIndex);
-		getCurrentRow().setColumnObject(columnIndex, new Long(x));
+		getCurrentRow().updateArrayElement(columnIndex, new Long(x));
 	}
 
 	public void updateLong(String columnName, long x) throws SQLException {
@@ -3782,7 +3529,7 @@
 			connection_.props_.getLogWriter().println(temp);
 		}
 		validateUpdInvocation(columnIndex);
-		getCurrentRow().setColumnObject(columnIndex, null);
+		getCurrentRow().updateArrayElement(columnIndex, null);
 	}
 
 	public void updateNull(String columnName) throws SQLException {
@@ -3838,7 +3585,7 @@
 			connection_.props_.getLogWriter().println(temp);
 		}
 		validateUpdInvocation(columnIndex);
-		getCurrentRow().setColumnObject(columnIndex, x);
+		getCurrentRow().updateArrayElement(columnIndex, x);
 	}
 
 	public void updateObject(String columnName, Object x) throws SQLException {
@@ -3917,41 +3664,11 @@
 		updateRef(columnIndex, x);
 	}
 
+        // Method not implemented
 	public void updateRow() throws SQLException {
-		if (connection_.props_.t4Logger_.isLoggable(Level.FINE) == true) {
-			Object p[] = T4LoggingUtilities.makeParams(connection_.props_);
-			connection_.props_.t4Logger_.logp(Level.FINE, "TrafT4ResultSet", "updateRow", "", p);
-		}
-		if (connection_.props_.getLogWriter() != null) {
-			LogRecord lr = new LogRecord(Level.FINE, "");
-			Object p[] = T4LoggingUtilities.makeParams(connection_.props_);
-			lr.setParameters(p);
-			lr.setSourceClassName("TrafT4ResultSet");
-			lr.setSourceMethodName("updateRow");
-			T4LogFormatter lf = new T4LogFormatter();
-			String temp = lf.format(lr);
-			connection_.props_.getLogWriter().println(temp);
-		}
-		clearWarnings();
-		if (getConcurrency() == ResultSet.CONCUR_READ_ONLY) {
-			throw HPT4Messages
-					.createSQLException(connection_.props_, connection_.getLocale(), "read_only_concur", null);
-		}
-		if (onInsertRow_) {
-			throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(),
-					"invalid_cursor_position", null);
-		}
-
-		if (connection_.getAutoCommit()) {
-			// should set a warning for the user
-			setSQLWarning(connection_.props_, "resultSet_updateRow_with_autocommit", null);
-		}
-		prepareUpdateStmt();
-		Row row = (Row) getCurrentRow();
-		// Update the row in database
-		row.updateRow(connection_.getLocale(), updateStmt_, paramCols_, keyCols_);
-
-
+           throw HPT4Messages.createSQLException(connection_.props_, 
+                                                 connection_.getLocale(),
+                                                 "updateRow - not supported", null);
 	}
 
 	public void updateShort(int columnIndex, short x) throws SQLException {
@@ -3970,7 +3687,7 @@
 			connection_.props_.getLogWriter().println(temp);
 		}
 		validateUpdInvocation(columnIndex);
-		getCurrentRow().setColumnObject(columnIndex, new Short(x));
+		getCurrentRow().updateArrayElement(columnIndex, new Short(x));
 	}
 
 	public void updateShort(String columnName, short x) throws SQLException {
@@ -4008,7 +3725,7 @@
 			connection_.props_.getLogWriter().println(temp);
 		}
 		validateUpdInvocation(columnIndex);
-		getCurrentRow().setColumnObject(columnIndex, x);
+		getCurrentRow().updateArrayElement(columnIndex, x);
 	}
 
 	public void updateString(String columnName, String x) throws SQLException {
@@ -4046,7 +3763,7 @@
 			connection_.props_.getLogWriter().println(temp);
 		}
 		validateUpdInvocation(columnIndex);
-		getCurrentRow().setColumnObject(columnIndex, x);
+		getCurrentRow().updateArrayElement(columnIndex, x);
 	}
 
 	public void updateTime(String columnName, Time x) throws SQLException {
@@ -4084,7 +3801,7 @@
 			connection_.props_.getLogWriter().println(temp);
 		}
 		validateUpdInvocation(columnIndex);
-		getCurrentRow().setColumnObject(columnIndex, x);
+		getCurrentRow().updateArrayElement(columnIndex, x);
 	}
 
 	public void updateTimestamp(String columnName, Timestamp x) throws SQLException {
@@ -4295,7 +4012,7 @@
 		}
 	}
 
-	private BaseRow getCurrentRow() throws SQLException {
+	private ObjectArray getCurrentRow() throws SQLException {
 		if (connection_.props_.t4Logger_.isLoggable(Level.FINE) == true) {
 			Object p[] = T4LoggingUtilities.makeParams(connection_.props_);
 			connection_.props_.t4Logger_.logp(Level.FINE, "TrafT4ResultSet", "getCurrentRow", "", p);
@@ -4319,7 +4036,7 @@
 			if (isAfterLast_) {
 				throw HPT4Messages.createSQLException(connection_.props_, connection_.getLocale(), "cursor_after_last_row", null);
 			}
-			return (BaseRow) cachedRows_.get(currentRow_ - 1);
+			return (ObjectArray) cachedRows_.get(currentRow_ - 1);
 		}
 	}
 
@@ -4597,7 +4314,7 @@
 	// DatabaseMetaData catalog APIs also call this method to update the rows
 	// fetched
 	//
-	void setFetchOutputs(Row[] row, int rowsFetched, boolean endOfData) throws SQLException {
+	void setFetchOutputs(ObjectArray[] row, int rowsFetched, boolean endOfData) throws SQLException {
 		if (connection_.props_.t4Logger_.isLoggable(Level.FINE) == true) {
 			Object p[] = T4LoggingUtilities.makeParams(connection_.props_, row, rowsFetched, endOfData, 0);
 			connection_.props_.t4Logger_.logp(Level.FINE, "TrafT4ResultSet", "setFetchOutputs", "", p);
@@ -4828,9 +4545,9 @@
 		int sqlCharset = outputDesc_[columnIndex - 1].sqlCharset_;
 
 		wasNull_ = true;
-		BaseRow row = getCurrentRow();
+		ObjectArray row = getCurrentRow();
 		if (row != null) {
-			obj = row.getColumnObject(columnIndex);
+			obj = row.getUpdatedArrayElement(columnIndex);
 			if (obj != null) {
 				if (obj instanceof byte[]) {
 					try {
@@ -5024,7 +4741,7 @@
 
 	ArrayList cachedRows_;
 	boolean onInsertRow_;
-	InsertRow insertRow_;
+	ObjectArray insertRow_;
 	int savedCurrentRow_;
 	boolean showInserted_;
 	int numRows_;
diff --git a/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/TrafT4Statement.java b/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/TrafT4Statement.java
index d0daff1..d28746f 100644
--- a/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/TrafT4Statement.java
+++ b/core/conn/jdbc_type4/src/org/trafodion/jdbc/t4/TrafT4Statement.java
@@ -1272,7 +1272,7 @@
 
 			if (rowsAffected == 0) {
 				if (endOfData == true) {
-					resultSet_[result_set_offset].setFetchOutputs(new Row[0], 0, true);
+					resultSet_[result_set_offset].setFetchOutputs(new ObjectArray[0], 0, true);
 				}
 			} else {
 				 if(resultSet_[result_set_offset].keepRawBuffer_ == true)