DRILL-677: Convert Hive data types to nullable SQL types in metadata conversion.
Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/68b9778d Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/68b9778d Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/68b9778d Branch: refs/heads/master Commit: 68b9778d1bcf45fda30bf3017371f9e0705d0de5 Parents: 71432fd Author: vkorukanti <[email protected]> Authored: Wed Jun 11 13:14:56 2014 -0700 Committer: Jacques Nadeau <[email protected]> Committed: Wed Jun 11 16:07:08 2014 -0700 ---------------------------------------------------------------------- .../drill/exec/store/hive/schema/DrillHiveTable.java | 9 +++++++-- .../java/org/apache/drill/jdbc/test/TestMetadataDDL.java | 11 +++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/68b9778d/exec/java-exec/src/main/java/org/apache/drill/exec/store/hive/schema/DrillHiveTable.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/store/hive/schema/DrillHiveTable.java b/exec/java-exec/src/main/java/org/apache/drill/exec/store/hive/schema/DrillHiveTable.java index 02d19d3..1c1e4da 100644 --- a/exec/java-exec/src/main/java/org/apache/drill/exec/store/hive/schema/DrillHiveTable.java +++ b/exec/java-exec/src/main/java/org/apache/drill/exec/store/hive/schema/DrillHiveTable.java @@ -56,19 +56,24 @@ public class DrillHiveTable extends DrillTable{ List<FieldSchema> hiveFields = hiveTable.getSd().getCols(); for(FieldSchema hiveField : hiveFields) { fieldNameList.add(hiveField.getName()); - typeList.add(getRelDataTypeFromHiveType( + typeList.add(getNullableRelDataTypeFromHiveType( typeFactory, TypeInfoUtils.getTypeInfoFromTypeString(hiveField.getType()))); } for (FieldSchema field : hiveTable.getPartitionKeys()) { fieldNameList.add(field.getName()); - typeList.add(getRelDataTypeFromHiveType( + typeList.add(getNullableRelDataTypeFromHiveType( typeFactory, TypeInfoUtils.getTypeInfoFromTypeString(field.getType()))); } return typeFactory.createStructType(typeList, fieldNameList); } + private RelDataType getNullableRelDataTypeFromHiveType(RelDataTypeFactory typeFactory, TypeInfo typeInfo) { + RelDataType relDataType = getRelDataTypeFromHiveType(typeFactory, typeInfo); + return typeFactory.createTypeWithNullability(relDataType, true); + } + private RelDataType getRelDataTypeFromHivePrimitiveType(RelDataTypeFactory typeFactory, PrimitiveTypeInfo pTypeInfo) { switch(pTypeInfo.getPrimitiveCategory()) { case BOOLEAN: http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/68b9778d/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestMetadataDDL.java ---------------------------------------------------------------------- diff --git a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestMetadataDDL.java b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestMetadataDDL.java index 3580711..279d637 100644 --- a/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestMetadataDDL.java +++ b/exec/jdbc/src/test/java/org/apache/drill/jdbc/test/TestMetadataDDL.java @@ -135,6 +135,17 @@ public class TestMetadataDDL extends TestJdbcQuery { "COLUMN_NAME=CATALOG_CONNECT; DATA_TYPE=VARCHAR; IS_NULLABLE=NO\n"); } + + @Test + public void testDescribeTableNullableColumns() throws Exception{ + JdbcAssert.withNoDefaultSchema() + .sql("DESCRIBE hive.`default`.kv") + .returns( + "COLUMN_NAME=key; DATA_TYPE=INTEGER; IS_NULLABLE=YES\n" + + "COLUMN_NAME=value; DATA_TYPE=VARCHAR; IS_NULLABLE=YES\n" + ); + } + @Test public void testDescribeTableWithSchema() throws Exception{ JdbcAssert.withNoDefaultSchema()
