diff --git a/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardStructObjectInspector.java b/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardStructObjectInspector.java index 3de9a2ee31..d24447b032 100644 --- a/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardStructObjectInspector.java +++ b/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardStructObjectInspector.java @@ -22,6 +22,7 @@ import java.util.Arrays; import java.util.List; +import org.apache.hadoop.hive.serde2.lazybinary.LazyBinaryStruct; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -171,6 +172,10 @@ public Object getStructFieldData(Object data, StructField fieldRef) { // so we have to do differently. boolean isArray = data.getClass().isArray(); if (!isArray && !(data instanceof List)) { + if (data instanceof LazyBinaryStruct + && fieldRef.getFieldObjectInspector().getCategory() == Category.PRIMITIVE) { + return ((LazyBinaryStruct) data).getField(((MyField) fieldRef).fieldID); + } if (!warned) { LOG.warn("Invalid type for struct " + data.getClass()); LOG.warn("ignoring similar errors.");