mirror of https://github.com/apache/nifi.git
NIFI-2623: Fixed support for binary types in SelectHiveQL
This closes #920. Signed-off-by: Bryan Bende <bbende@apache.org>
This commit is contained in:
parent
8cc670c8a6
commit
fbec3b9c13
|
@ -103,11 +103,19 @@ public class HiveJdbcCommon {
|
|||
if (value == null) {
|
||||
rec.put(i - 1, null);
|
||||
|
||||
} else if (javaSqlType == BINARY || javaSqlType == VARBINARY || javaSqlType == LONGVARBINARY || javaSqlType == ARRAY || javaSqlType == BLOB || javaSqlType == CLOB) {
|
||||
} else if (javaSqlType == BINARY || javaSqlType == VARBINARY || javaSqlType == LONGVARBINARY || javaSqlType == BLOB || javaSqlType == CLOB) {
|
||||
// bytes requires little bit different handling
|
||||
byte[] bytes = rs.getBytes(i);
|
||||
ByteBuffer bb = ByteBuffer.wrap(bytes);
|
||||
ByteBuffer bb = null;
|
||||
if (value instanceof byte[]) {
|
||||
bb = ByteBuffer.wrap((byte[]) value);
|
||||
} else if (value instanceof ByteBuffer) {
|
||||
bb = (ByteBuffer) value;
|
||||
}
|
||||
if (bb != null) {
|
||||
rec.put(i - 1, bb);
|
||||
} else {
|
||||
throw new IOException("Could not process binary object of type " + value.getClass().getName());
|
||||
}
|
||||
|
||||
} else if (value instanceof Byte) {
|
||||
// tinyint(1) type is returned by JDBC driver as java.sql.Types.TINYINT
|
||||
|
@ -202,6 +210,7 @@ public class HiveJdbcCommon {
|
|||
case NCHAR:
|
||||
case NVARCHAR:
|
||||
case VARCHAR:
|
||||
case ARRAY:
|
||||
builder.name(columnName).type().unionOf().nullBuilder().endNull().and().stringType().endUnion().noDefault();
|
||||
break;
|
||||
|
||||
|
@ -265,7 +274,6 @@ public class HiveJdbcCommon {
|
|||
case BINARY:
|
||||
case VARBINARY:
|
||||
case LONGVARBINARY:
|
||||
case ARRAY:
|
||||
case BLOB:
|
||||
case CLOB:
|
||||
builder.name(columnName).type().unionOf().nullBuilder().endNull().and().bytesType().endUnion().noDefault();
|
||||
|
|
Loading…
Reference in New Issue