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()

Reply via email to