You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2015/12/02 19:45:38 UTC

hive git commit: HIVE-10613 : HCatSchemaUtils getHCatFieldSchema should include field comment (Thomas Friedrich via Ashutosh Chauhan)

Repository: hive
Updated Branches:
  refs/heads/master e2d9ada8d -> dfa2d203f


HIVE-10613 : HCatSchemaUtils getHCatFieldSchema should include field comment (Thomas Friedrich via Ashutosh Chauhan)

Signed-off-by: Ashutosh Chauhan <ha...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/dfa2d203
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/dfa2d203
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/dfa2d203

Branch: refs/heads/master
Commit: dfa2d203fa5d9b9e5c3eaa83dce563ecd8a3b1c1
Parents: e2d9ada
Author: Thomas Friedrich <tf...@yahoo.com>
Authored: Fri Nov 20 15:56:00 2015 -0800
Committer: Ashutosh Chauhan <ha...@apache.org>
Committed: Wed Dec 2 10:45:19 2015 -0800

----------------------------------------------------------------------
 .../hcatalog/data/schema/HCatSchemaUtils.java   | 16 +++++------
 .../data/schema/TestHCatSchemaUtils.java        | 28 ++++++++++++++++++++
 2 files changed, 36 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/dfa2d203/hcatalog/core/src/main/java/org/apache/hive/hcatalog/data/schema/HCatSchemaUtils.java
----------------------------------------------------------------------
diff --git a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/data/schema/HCatSchemaUtils.java b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/data/schema/HCatSchemaUtils.java
index 16c1604..d945486 100644
--- a/hcatalog/core/src/main/java/org/apache/hive/hcatalog/data/schema/HCatSchemaUtils.java
+++ b/hcatalog/core/src/main/java/org/apache/hive/hcatalog/data/schema/HCatSchemaUtils.java
@@ -112,24 +112,24 @@ public class HCatSchemaUtils {
   public static HCatFieldSchema getHCatFieldSchema(FieldSchema fs) throws HCatException {
     String fieldName = fs.getName();
     TypeInfo baseTypeInfo = TypeInfoUtils.getTypeInfoFromTypeString(fs.getType());
-    return getHCatFieldSchema(fieldName, baseTypeInfo);
+    return getHCatFieldSchema(fieldName, baseTypeInfo, fs.getComment());
   }
 
-  private static HCatFieldSchema getHCatFieldSchema(String fieldName, TypeInfo fieldTypeInfo) throws HCatException {
+  private static HCatFieldSchema getHCatFieldSchema(String fieldName, TypeInfo fieldTypeInfo, String comment) throws HCatException {
     Category typeCategory = fieldTypeInfo.getCategory();
     HCatFieldSchema hCatFieldSchema;
     if (Category.PRIMITIVE == typeCategory) {
-      hCatFieldSchema = new HCatFieldSchema(fieldName, (PrimitiveTypeInfo)fieldTypeInfo, null);
+      hCatFieldSchema = new HCatFieldSchema(fieldName, (PrimitiveTypeInfo)fieldTypeInfo, comment);
     } else if (Category.STRUCT == typeCategory) {
       HCatSchema subSchema = constructHCatSchema((StructTypeInfo) fieldTypeInfo);
-      hCatFieldSchema = new HCatFieldSchema(fieldName, HCatFieldSchema.Type.STRUCT, subSchema, null);
+      hCatFieldSchema = new HCatFieldSchema(fieldName, HCatFieldSchema.Type.STRUCT, subSchema, comment);
     } else if (Category.LIST == typeCategory) {
       HCatSchema subSchema = getHCatSchema(((ListTypeInfo) fieldTypeInfo).getListElementTypeInfo());
-      hCatFieldSchema = new HCatFieldSchema(fieldName, HCatFieldSchema.Type.ARRAY, subSchema, null);
+      hCatFieldSchema = new HCatFieldSchema(fieldName, HCatFieldSchema.Type.ARRAY, subSchema, comment);
     } else if (Category.MAP == typeCategory) {
       HCatSchema subSchema = getHCatSchema(((MapTypeInfo) fieldTypeInfo).getMapValueTypeInfo());
       hCatFieldSchema = HCatFieldSchema.createMapTypeFieldSchema(fieldName, 
-              (PrimitiveTypeInfo)((MapTypeInfo)fieldTypeInfo).getMapKeyTypeInfo(), subSchema, null);
+              (PrimitiveTypeInfo)((MapTypeInfo)fieldTypeInfo).getMapKeyTypeInfo(), subSchema, comment);
     } else {
       throw new TypeNotPresentException(fieldTypeInfo.getTypeName(), null);
     }
@@ -151,7 +151,7 @@ public class HCatSchemaUtils {
   private static HCatSchema constructHCatSchema(StructTypeInfo stypeInfo) throws HCatException {
     CollectionBuilder builder = getStructSchemaBuilder();
     for (String fieldName : stypeInfo.getAllStructFieldNames()) {
-      builder.addField(getHCatFieldSchema(fieldName, stypeInfo.getStructFieldTypeInfo(fieldName)));
+      builder.addField(getHCatFieldSchema(fieldName, stypeInfo.getStructFieldTypeInfo(fieldName), null));
     }
     return builder.build();
   }
@@ -166,7 +166,7 @@ public class HCatSchemaUtils {
       hCatSchema = getStructSchemaBuilder().addField(new HCatFieldSchema(null, Type.STRUCT, subSchema, null)).build();
     } else if (Category.LIST == typeCategory) {
       CollectionBuilder builder = getListSchemaBuilder();
-      builder.addField(getHCatFieldSchema(null, ((ListTypeInfo) typeInfo).getListElementTypeInfo()));
+      builder.addField(getHCatFieldSchema(null, ((ListTypeInfo) typeInfo).getListElementTypeInfo(), null));
       hCatSchema = new HCatSchema(Arrays.asList(new HCatFieldSchema("", Type.ARRAY, builder.build(), "")));
     } else if (Category.MAP == typeCategory) {
       HCatSchema subSchema = getHCatSchema(((MapTypeInfo) typeInfo).getMapValueTypeInfo());

http://git-wip-us.apache.org/repos/asf/hive/blob/dfa2d203/hcatalog/core/src/test/java/org/apache/hive/hcatalog/data/schema/TestHCatSchemaUtils.java
----------------------------------------------------------------------
diff --git a/hcatalog/core/src/test/java/org/apache/hive/hcatalog/data/schema/TestHCatSchemaUtils.java b/hcatalog/core/src/test/java/org/apache/hive/hcatalog/data/schema/TestHCatSchemaUtils.java
index e80c3d2..fb859ec 100644
--- a/hcatalog/core/src/test/java/org/apache/hive/hcatalog/data/schema/TestHCatSchemaUtils.java
+++ b/hcatalog/core/src/test/java/org/apache/hive/hcatalog/data/schema/TestHCatSchemaUtils.java
@@ -22,6 +22,8 @@ import java.io.PrintStream;
 
 import junit.framework.TestCase;
 
+import org.apache.hadoop.hive.metastore.api.FieldSchema;
+import org.apache.hadoop.hive.serde.serdeConstants;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo;
 import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils;
 import org.apache.hive.hcatalog.common.HCatException;
@@ -50,6 +52,32 @@ public class TestHCatSchemaUtils extends TestCase {
     assertEquals(ti.getTypeName().toLowerCase(), hsch.get(0).getTypeString());
     assertEquals(hsch.get(0).getTypeString(), typeString.toLowerCase());
   }
+  
+  public void testHCatFieldSchemaConversion() throws Exception {
+	  FieldSchema stringFieldSchema = new FieldSchema("name1", serdeConstants.STRING_TYPE_NAME, "comment1");
+	  HCatFieldSchema stringHCatFieldSchema = HCatSchemaUtils.getHCatFieldSchema(stringFieldSchema);
+	  assertEquals(stringHCatFieldSchema.getName(), "name1");
+	  assertEquals(stringHCatFieldSchema.getCategory(), Category.PRIMITIVE);
+	  assertEquals(stringHCatFieldSchema.getComment(), "comment1");
+
+	  FieldSchema listFieldSchema = new FieldSchema("name1", "array<tinyint>", "comment1");
+	  HCatFieldSchema listHCatFieldSchema = HCatSchemaUtils.getHCatFieldSchema(listFieldSchema);
+	  assertEquals(listHCatFieldSchema.getName(), "name1");
+	  assertEquals(listHCatFieldSchema.getCategory(), Category.ARRAY);
+	  assertEquals(listHCatFieldSchema.getComment(), "comment1");
+
+	  FieldSchema mapFieldSchema = new FieldSchema("name1", "map<string,int>", "comment1");
+	  HCatFieldSchema mapHCatFieldSchema = HCatSchemaUtils.getHCatFieldSchema(mapFieldSchema);
+	  assertEquals(mapHCatFieldSchema.getName(), "name1");
+	  assertEquals(mapHCatFieldSchema.getCategory(), Category.MAP);
+	  assertEquals(mapHCatFieldSchema.getComment(), "comment1");
+
+	  FieldSchema structFieldSchema = new FieldSchema("name1", "struct<s:string,i:tinyint>", "comment1");
+	  HCatFieldSchema structHCatFieldSchema = HCatSchemaUtils.getHCatFieldSchema(structFieldSchema);
+	  assertEquals(structHCatFieldSchema.getName(), "name1");
+	  assertEquals(structHCatFieldSchema.getCategory(), Category.STRUCT);
+	  assertEquals(structHCatFieldSchema.getComment(), "comment1");
+  }
 
   @SuppressWarnings("unused")
   private void pretty_print(PrintStream pout, HCatSchema hsch) throws HCatException {