diff --git a/java/core/src/java/org/apache/orc/OrcUtils.java b/java/core/src/java/org/apache/orc/OrcUtils.java index 76e5e16f..da075d35 100644 --- a/java/core/src/java/org/apache/orc/OrcUtils.java +++ b/java/core/src/java/org/apache/orc/OrcUtils.java @@ -72,10 +72,17 @@ public class OrcUtils { List fields) { int i = 0; for(String fieldName: fieldNames) { - if (fieldName.equalsIgnoreCase(columnName)) { - return fields.get(i); + TypeDescription resultTypeDesc = fields.get(i); + + if(resultTypeDesc.getCategory() == TypeDescription.Category.STRUCT) { + return findColumn(columnName, resultTypeDesc.getFieldNames(), resultTypeDesc.getChildren()); + } else { - i += 1; + if (fieldName.equalsIgnoreCase(columnName)) { + return resultTypeDesc; + } else { + i += 1; + } } } return null;