Merge remote branch 'origin/pr/1242/head' into merge_1242
diff --git a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4Properties.java b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4Properties.java
index 202bc27..3e87910 100644
--- a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4Properties.java
+++ b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4Properties.java
@@ -120,6 +120,7 @@
 	String blobTableName_;
 
     private int lobChunkSize_ = 10; // default 10M
+    private boolean useLobHandle_ = false;
 
     // private short transportBufferSize_;
 	private boolean useArrayBinding_;
@@ -429,6 +430,7 @@
         setTcpNoDelay(getProperty("tcpNoDelay"));
 
         setLobChunkSize(getProperty("lobChunkSize"));
+        setUseLobHandle(getProperty("useLobHandle"));
 	}
 
 	T4Properties getT4Properties() {
@@ -523,6 +525,7 @@
         props.setProperty("tcpNoDelay", String.valueOf(_tcpNoDelay));
         
         props.setProperty("lobChunkSize", String.valueOf(lobChunkSize_));
+        props.setProperty("useLobHandle", String.valueOf(useLobHandle_));
 
 		return props;
 	}
@@ -1910,6 +1913,23 @@
         }
     }
 
+    public boolean getUseLobHandle() {
+        return useLobHandle_;
+    }
+
+    public void setUseLobHandle(boolean useLobHandle) {
+        this.useLobHandle_ = useLobHandle;
+    }
+
+    public void setUseLobHandle(String val) {
+        if (val != null) {
+            setUseLobHandle(Boolean.parseBoolean(val));
+        }
+        else {
+            setUseLobHandle(false);
+        }
+    }
+
 	/**
 	 * Returns the rounding mode set for the driver as an Integer value with one
 	 * of the following values. static int ROUND_CEILING Rounding mode to round
diff --git a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4ResultSet.java b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4ResultSet.java
index 20338a8..9997f98 100644
--- a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4ResultSet.java
+++ b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/TrafT4ResultSet.java
@@ -1857,16 +1857,16 @@
 			break;
         case Types.BLOB:
             data = getLocalString(columnIndex);
-            if (data != null) {
+            if ( !connection_.props_.getUseLobHandle() && data != null) {
                 Blob blob = new TrafT4Blob(connection_, data, null);
-                return new String((blob.getBytes(1, (int) blob.length())));
+                data = new String((blob.getBytes(1, (int) blob.length())));
             }
             break;
         case Types.CLOB:
             data = getLocalString(columnIndex);
-            if (data != null) {
+            if ( !connection_.props_.getUseLobHandle() && data != null) {
                 Clob clob = new TrafT4Clob(connection_, data, null);
-                return clob.getSubString(1, (int)clob.length());
+                data =  clob.getSubString(1, (int)clob.length());
             }
             break;
 		case Types.VARBINARY:
diff --git a/core/conn/trafci/src/main/java/org/trafodion/ci/SessionInterface.java b/core/conn/trafci/src/main/java/org/trafodion/ci/SessionInterface.java
index 0243eb1..cf167b5 100644
--- a/core/conn/trafci/src/main/java/org/trafodion/ci/SessionInterface.java
+++ b/core/conn/trafci/src/main/java/org/trafodion/ci/SessionInterface.java
@@ -1133,6 +1133,7 @@
       driver.getMajorVersion();
       driver.getMinorVersion();
 
+      connProp.put("useLobHandle", String.valueOf(true));
       connProp.put("user",sessObj.getSessionUser());
       connProp.put("password",sessObj.getSessionPass());
 
@@ -1238,6 +1239,7 @@
       driver.getMajorVersion();
       driver.getMinorVersion();
 
+      connProp.put("useLobHandle", String.valueOf(true));
       connProp.put("user", (user==null?sessObj.getSessionUser():user) );
       connProp.put("password",(password==null?sessObj.getSessionPass():password));
       connProp.put("roleName", (null==role?"":role));