Repository: nifi Updated Branches: refs/heads/master 98cdb50cc -> 68a49cfad
NIFI-5845: Add support for OTHER and SQLXML JDBC types to SQL/Hive processors NIFI-5845: Incorporated review comments This closes #3184. Signed-off-by: Koji Kawamura <ijokaruma...@apache.org> Project: http://git-wip-us.apache.org/repos/asf/nifi/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/68a49cfa Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/68a49cfa Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/68a49cfa Branch: refs/heads/master Commit: 68a49cfad04df2f467f9529c0fc1b6daf1781192 Parents: 98cdb50 Author: Matthew Burgess <mattyb...@apache.org> Authored: Tue Nov 27 18:35:29 2018 -0500 Committer: Koji Kawamura <ijokaruma...@apache.org> Committed: Thu Nov 29 09:50:21 2018 +0900 ---------------------------------------------------------------------- .../org/apache/nifi/util/hive/HiveJdbcCommon.java | 13 +++++++++++++ .../org/apache/nifi/util/hive/HiveJdbcCommon.java | 14 ++++++++++++++ .../nifi/processors/standard/util/JdbcCommon.java | 7 +++++++ 3 files changed, 34 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi/blob/68a49cfa/nifi-nar-bundles/nifi-hive-bundle/nifi-hive-processors/src/main/java/org/apache/nifi/util/hive/HiveJdbcCommon.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-hive-bundle/nifi-hive-processors/src/main/java/org/apache/nifi/util/hive/HiveJdbcCommon.java b/nifi-nar-bundles/nifi-hive-bundle/nifi-hive-processors/src/main/java/org/apache/nifi/util/hive/HiveJdbcCommon.java index 6e28f94..9f07b18 100644 --- a/nifi-nar-bundles/nifi-hive-bundle/nifi-hive-processors/src/main/java/org/apache/nifi/util/hive/HiveJdbcCommon.java +++ b/nifi-nar-bundles/nifi-hive-bundle/nifi-hive-processors/src/main/java/org/apache/nifi/util/hive/HiveJdbcCommon.java @@ -40,6 +40,7 @@ import java.nio.charset.StandardCharsets; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; +import java.sql.SQLXML; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -64,9 +65,11 @@ import static java.sql.Types.LONGVARCHAR; import static java.sql.Types.NCHAR; import static java.sql.Types.NUMERIC; import static java.sql.Types.NVARCHAR; +import static java.sql.Types.OTHER; import static java.sql.Types.REAL; import static java.sql.Types.ROWID; import static java.sql.Types.SMALLINT; +import static java.sql.Types.SQLXML; import static java.sql.Types.STRUCT; import static java.sql.Types.TIME; import static java.sql.Types.TIMESTAMP; @@ -165,6 +168,8 @@ public class HiveJdbcCommon { } else if (value instanceof Boolean) { rec.put(i - 1, value); + } else if (value instanceof java.sql.SQLXML) { + rec.put(i - 1, ((java.sql.SQLXML) value).getString()); } else { // The different types that we support are numbers (int, long, double, float), // as well as boolean values and Strings. Since Avro doesn't provide @@ -241,6 +246,8 @@ public class HiveJdbcCommon { case ARRAY: case STRUCT: case JAVA_OBJECT: + case OTHER: + case SQLXML: builder.name(columnName).type().unionOf().nullBuilder().endNull().and().stringType().endUnion().noDefault(); break; @@ -402,6 +409,12 @@ public class HiveJdbcCommon { rowValues.add(""); } break; + case SQLXML: + if (value != null) { + rowValues.add(StringEscapeUtils.escapeCsv(((java.sql.SQLXML) value).getString())); + } else { + rowValues.add(""); + } default: if (value != null) { rowValues.add(value.toString()); http://git-wip-us.apache.org/repos/asf/nifi/blob/68a49cfa/nifi-nar-bundles/nifi-hive-bundle/nifi-hive3-processors/src/main/java/org/apache/nifi/util/hive/HiveJdbcCommon.java ---------------------------------------------------------------------- diff --git a/nifi-nar-bundles/nifi-hive-bundle/nifi-hive3-processors/src/main/java/org/apache/nifi/util/hive/HiveJdbcCommon.java b/nifi-nar-bundles/nifi-hive-bundle/nifi-hive3-processors/src/main/java/org/apache/nifi/util/hive/HiveJdbcCommon.java index 6e28f94..09eecce 100644 --- a/nifi-nar-bundles/nifi-hive-bundle/nifi-hive3-processors/src/main/java/org/apache/nifi/util/hive/HiveJdbcCommon.java +++ b/nifi-nar-bundles/nifi-hive-bundle/nifi-hive3-processors/src/main/java/org/apache/nifi/util/hive/HiveJdbcCommon.java @@ -40,6 +40,7 @@ import java.nio.charset.StandardCharsets; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; +import java.sql.SQLXML; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -64,9 +65,11 @@ import static java.sql.Types.LONGVARCHAR; import static java.sql.Types.NCHAR; import static java.sql.Types.NUMERIC; import static java.sql.Types.NVARCHAR; +import static java.sql.Types.OTHER; import static java.sql.Types.REAL; import static java.sql.Types.ROWID; import static java.sql.Types.SMALLINT; +import static java.sql.Types.SQLXML; import static java.sql.Types.STRUCT; import static java.sql.Types.TIME; import static java.sql.Types.TIMESTAMP; @@ -165,6 +168,8 @@ public class HiveJdbcCommon { } else if (value instanceof Boolean) { rec.put(i - 1, value); + } else if (value instanceof java.sql.SQLXML) { + rec.put(i - 1, ((java.sql.SQLXML) value).getString()); } else { // The different types that we support are numbers (int, long, double, float), // as well as boolean values and Strings. Since Avro doesn't provide @@ -241,6 +246,8 @@ public class HiveJdbcCommon { case ARRAY: case STRUCT: case JAVA_OBJECT: + case OTHER: + case SQLXML: builder.name(columnName).type().unionOf().nullBuilder().endNull().and().stringType().endUnion().noDefault(); break; @@ -402,6 +409,13 @@ public class HiveJdbcCommon { rowValues.add(""); } break; + case SQLXML: + if (value != null) { + rowValues.add(StringEscapeUtils.escapeCsv(((java.sql.SQLXML) value).getString())); + } else { + rowValues.add(""); + } + break; default: if (value != null) { rowValues.add(value.toString()); http://git-wip-us.apache.org/repos/asf/nifi/blob/68a49cfa/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 9681e2f..3de86c7 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 @@ -36,9 +36,11 @@ 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.OTHER; import static java.sql.Types.REAL; import static java.sql.Types.ROWID; import static java.sql.Types.SMALLINT; +import static java.sql.Types.SQLXML; import static java.sql.Types.TIME; import static java.sql.Types.TIMESTAMP; import static java.sql.Types.TIMESTAMP_WITH_TIMEZONE; @@ -65,6 +67,7 @@ import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLDataException; import java.sql.SQLException; +import java.sql.SQLXML; import java.sql.Time; import java.sql.Timestamp; import java.sql.Types; @@ -467,6 +470,8 @@ public class JdbcCommon { rec.put(i - 1, value.toString()); } + } else if (value instanceof java.sql.SQLXML) { + rec.put(i - 1, ((SQLXML) value).getString()); } else { // The different types that we support are numbers (int, long, double, float), // as well as boolean values and Strings. Since Avro doesn't provide @@ -564,6 +569,8 @@ public class JdbcCommon { case VARCHAR: case CLOB: case NCLOB: + case OTHER: + case SQLXML: builder.name(columnName).type().unionOf().nullBuilder().endNull().and().stringType().endUnion().noDefault(); break;