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;
}
Show replies by date