You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by pv...@apache.org on 2017/09/14 09:09:32 UTC
nifi git commit: NIFI-4352: Add CLOB and NCLOB support to PutSQL and
ExecuteSQL
Repository: nifi
Updated Branches:
refs/heads/master e52e9acc5 -> 1e70e2426
NIFI-4352: Add CLOB and NCLOB support to PutSQL and ExecuteSQL
Signed-off-by: Pierre Villard <pi...@gmail.com>
This closes #2145.
Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/1e70e242
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/1e70e242
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/1e70e242
Branch: refs/heads/master
Commit: 1e70e24267351a9c189ea26ee0536fdc8dbd7bd6
Parents: e52e9ac
Author: Koji Kawamura <ij...@apache.org>
Authored: Tue Sep 12 11:37:12 2017 +0900
Committer: Pierre Villard <pi...@gmail.com>
Committed: Thu Sep 14 11:02:48 2017 +0200
----------------------------------------------------------------------
.../apache/nifi/processors/standard/PutSQL.java | 11 ++++++++++
.../processors/standard/util/JdbcCommon.java | 21 ++++++++++++++++++++
2 files changed, 32 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/nifi/blob/1e70e242/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutSQL.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutSQL.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutSQL.java
index a3f1932..c35377a 100644
--- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutSQL.java
+++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/PutSQL.java
@@ -54,6 +54,7 @@ import javax.xml.bind.DatatypeConverter;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.StringReader;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets;
@@ -929,6 +930,16 @@ public class PutSQL extends AbstractSessionFactoryProcessor {
case Types.LONGVARCHAR:
stmt.setString(parameterIndex, parameterValue);
break;
+ case Types.CLOB:
+ try (final StringReader reader = new StringReader(parameterValue)) {
+ stmt.setCharacterStream(parameterIndex, reader);
+ }
+ break;
+ case Types.NCLOB:
+ try (final StringReader reader = new StringReader(parameterValue)) {
+ stmt.setNCharacterStream(parameterIndex, reader);
+ }
+ break;
default:
stmt.setObject(parameterIndex, parameterValue, jdbcType);
break;
http://git-wip-us.apache.org/repos/asf/nifi/blob/1e70e242/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/JdbcCommon.java
----------------------------------------------------------------------
diff --git a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/JdbcCommon.java b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/JdbcCommon.java
index 97d5cc1..bd9a74c 100644
--- a/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/JdbcCommon.java
+++ b/nifi-nar-bundles/nifi-standard-bundle/nifi-standard-processors/src/main/java/org/apache/nifi/processors/standard/util/JdbcCommon.java
@@ -33,6 +33,7 @@ import static java.sql.Types.LONGNVARCHAR;
import static java.sql.Types.LONGVARBINARY;
import static java.sql.Types.LONGVARCHAR;
import static java.sql.Types.NCHAR;
+import static java.sql.Types.NCLOB;
import static java.sql.Types.NUMERIC;
import static java.sql.Types.NVARCHAR;
import static java.sql.Types.REAL;
@@ -47,11 +48,14 @@ import static java.sql.Types.VARCHAR;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.io.Reader;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
import java.sql.Blob;
import java.sql.Clob;
+import java.sql.NClob;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
@@ -278,6 +282,22 @@ public class JdbcCommon {
continue;
}
+ if (javaSqlType == NCLOB) {
+ NClob nClob = rs.getNClob(i);
+ if (nClob != null) {
+ final Reader characterStream = nClob.getCharacterStream();
+ long numChars = (int) nClob.length();
+ final CharBuffer buffer = CharBuffer.allocate((int) numChars);
+ characterStream.read(buffer);
+ buffer.flip();
+ rec.put(i - 1, buffer.toString());
+ nClob.free();
+ } else {
+ rec.put(i - 1, null);
+ }
+ continue;
+ }
+
if (javaSqlType == BLOB) {
Blob blob = rs.getBlob(i);
if (blob != null) {
@@ -454,6 +474,7 @@ public class JdbcCommon {
case NVARCHAR:
case VARCHAR:
case CLOB:
+ case NCLOB:
builder.name(columnName).type().unionOf().nullBuilder().endNull().and().stringType().endUnion().noDefault();
break;