diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorFactory.java b/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorFactory.java index b21755e..0e39073 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorFactory.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ObjectInspectorFactory.java @@ -155,6 +155,12 @@ public final class ObjectInspectorFactory { .getTypeEntryFromPrimitiveWritableClass(c).primitiveCategory); } + // Enum class? + if (Enum.class.isAssignableFrom(c)) { + return PrimitiveObjectInspectorFactory + .getPrimitiveJavaObjectInspector(PrimitiveObjectInspector.PrimitiveCategory.STRING); + } + // Must be struct because List and Map need to be ParameterizedType assert (!List.class.isAssignableFrom(c)); assert (!Map.class.isAssignableFrom(c)); diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaStringObjectInspector.java b/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaStringObjectInspector.java index 921ce2b..b496ca5 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaStringObjectInspector.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/JavaStringObjectInspector.java @@ -32,12 +32,28 @@ public class JavaStringObjectInspector extends @Override public Text getPrimitiveWritableObject(Object o) { - return o == null ? null : new Text(((String) o)); + if (o == null) { + return null; + } + + if (Enum.class.isAssignableFrom(o.getClass())) { + return new Text(o.toString()); + } else { + return new Text((String) o); + } } @Override public String getPrimitiveJavaObject(Object o) { - return (String) o; + if (o == null) { + return null; + } + + if (Enum.class.isAssignableFrom(o.getClass())) { + return o.toString(); + } else { + return (String) o; + } } @Override