diff --git ivy/libraries.properties ivy/libraries.properties
index af856bd..4236df1 100644
--- ivy/libraries.properties
+++ ivy/libraries.properties
@@ -44,6 +44,7 @@ junit.version=3.8.1
ivy.version=2.1.0
log4j.version=1.2.15
maven-ant-tasks.version=2.1.0
+mockito-all.version=1.8.2
slf4j-api.version=1.6.1
slf4j-log4j12.version=1.6.1
thrift.version=0.5.0
diff --git metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java
index c1fa4e5..6983149 100644
--- metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java
+++ metastore/src/java/org/apache/hadoop/hive/metastore/MetaStoreUtils.java
@@ -823,21 +823,27 @@ public class MetaStoreUtils {
// rules on how to recurse the ObjectInspector based on its type
if (oi.getCategory() != Category.STRUCT) {
str_fields.add(new FieldSchema(last_name, oi.getTypeName(),
- "from deserializer"));
+ FROM_SERIALIZER));
} else {
List extends StructField> fields = ((StructObjectInspector) oi)
.getAllStructFieldRefs();
for (int i = 0; i < fields.size(); i++) {
- String fieldName = fields.get(i).getFieldName();
- String fieldTypeName = fields.get(i).getFieldObjectInspector()
- .getTypeName();
- str_fields.add(new FieldSchema(fieldName, fieldTypeName,
- "from deserializer"));
+ StructField structField = fields.get(i);
+ String fieldName = structField.getFieldName();
+ String fieldTypeName = structField.getFieldObjectInspector().getTypeName();
+ String fieldComment = determineFieldComment(structField.getFieldComment());
+
+ str_fields.add(new FieldSchema(fieldName, fieldTypeName, fieldComment));
}
}
return str_fields;
}
+ private static final String FROM_SERIALIZER = "from deserializer";
+ private static String determineFieldComment(String comment) {
+ return (comment == null || comment.isEmpty()) ? FROM_SERIALIZER : comment;
+ }
+
/**
* Convert TypeInfo to FieldSchema.
*/
diff --git serde/ivy.xml serde/ivy.xml
index d6c836a..01c4d0c 100644
--- serde/ivy.xml
+++ serde/ivy.xml
@@ -28,5 +28,6 @@
+
diff --git serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazyObjectInspectorFactory.java serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazyObjectInspectorFactory.java
index 4850601..8fee0fc 100644
--- serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazyObjectInspectorFactory.java
+++ serde/src/java/org/apache/hadoop/hive/serde2/lazy/objectinspector/LazyObjectInspectorFactory.java
@@ -46,6 +46,16 @@ public final class LazyObjectInspectorFactory {
List structFieldObjectInspectors, byte separator,
Text nullSequence, boolean lastColumnTakesRest, boolean escaped,
byte escapeChar) {
+ return getLazySimpleStructObjectInspector(structFieldNames,
+ structFieldObjectInspectors, null, separator, nullSequence,
+ lastColumnTakesRest, escaped, escapeChar);
+ }
+
+ public static LazySimpleStructObjectInspector getLazySimpleStructObjectInspector(
+ List structFieldNames,
+ List structFieldObjectInspectors, List structFieldComments,
+ byte separator, Text nullSequence, boolean lastColumnTakesRest,
+ boolean escaped,byte escapeChar) {
ArrayList