[teiid-commits] teiid SVN: r4131 - in trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc: oracle and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Mon May 21 15:02:53 EDT 2012


Author: shawkins
Date: 2012-05-21 15:02:53 -0400 (Mon, 21 May 2012)
New Revision: 4131

Modified:
   trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCExecutionFactory.java
   trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/oracle/OracleExecutionFactory.java
Log:
TEIID-2056 fix for oracle lob handling

Modified: trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCExecutionFactory.java
===================================================================
--- trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCExecutionFactory.java	2012-05-21 15:54:43 UTC (rev 4130)
+++ trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/JDBCExecutionFactory.java	2012-05-21 19:02:53 UTC (rev 4131)
@@ -24,15 +24,7 @@
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
-import java.sql.CallableStatement;
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.sql.Time;
-import java.sql.Timestamp;
+import java.sql.*;
 import java.text.MessageFormat;
 import java.util.Arrays;
 import java.util.Calendar;
@@ -811,6 +803,19 @@
         	stmt.setBigDecimal(i, (BigDecimal)param);
             return;
         }
+        
+        if (useStreamsForLobs()) {
+        	if (param instanceof Blob) {
+        		Blob blob = (Blob)param;
+        		stmt.setBinaryStream(i, blob.getBinaryStream(), blob.length());
+        		return;
+        	}
+        	if (param instanceof Clob) {
+        		Clob clob = (Clob)param;
+        		stmt.setCharacterStream(i, clob.getCharacterStream(), clob.length());
+        		return;
+        	}
+        }
         //convert these the following to jdbc safe values
         if (TypeFacility.RUNTIME_TYPES.BIG_INTEGER.equals(paramType)) {
             param = new BigDecimal((BigInteger)param);
@@ -825,6 +830,14 @@
         stmt.setObject(i, param, type);
     }
     
+    /**
+     * If streams should be used for Blob/Clob sets on {@link PreparedStatement}s
+     * @return
+     */
+    public boolean useStreamsForLobs() {
+    	return false;
+    }
+    
 	/**
 	 * Retrieve the value on the current resultset row for the given column index.
 	 * @param results

Modified: trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/oracle/OracleExecutionFactory.java
===================================================================
--- trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/oracle/OracleExecutionFactory.java	2012-05-21 15:54:43 UTC (rev 4130)
+++ trunk/connectors/translator-jdbc/src/main/java/org/teiid/translator/jdbc/oracle/OracleExecutionFactory.java	2012-05-21 19:02:53 UTC (rev 4131)
@@ -449,6 +449,11 @@
     }
     
     @Override
+    public boolean useStreamsForLobs() {
+    	return true;
+    }
+    
+    @Override
     public NullOrder getDefaultNullOrder() {
     	return NullOrder.HIGH;
     }



More information about the teiid-commits mailing list