diff --git data/files/struct.txt data/files/struct.txt new file mode 100644 index 0000000..211e047 --- /dev/null +++ data/files/struct.txt @@ -0,0 +1,3 @@ +line1|key11:value11,key12:value12,key13:value13|a,b,c|one,two +line2|key21:value21,key22:value22,key23:value23|d,e,f|three,four +line3|key31:value31,key32:value32,key33:value33|g,h,i|five,six diff --git itests/custom-serde/src/main/java/org/apache/hadoop/hive/serde2/CustomNonSettableStructObjectInspector1.java itests/custom-serde/src/main/java/org/apache/hadoop/hive/serde2/CustomNonSettableStructObjectInspector1.java index c09fd61..f22d345 100644 --- itests/custom-serde/src/main/java/org/apache/hadoop/hive/serde2/CustomNonSettableStructObjectInspector1.java +++ itests/custom-serde/src/main/java/org/apache/hadoop/hive/serde2/CustomNonSettableStructObjectInspector1.java @@ -112,11 +112,6 @@ public final Category getCategory() { // Without Data @Override - public StructField getStructFieldRef(String fieldName) { - return ObjectInspectorUtils.getStandardStructFieldRef(fieldName, fields); - } - - @Override public List getAllStructFieldRefs() { return fields; } diff --git ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java index a056822..b276bef 100644 --- ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java +++ ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcStruct.java @@ -214,16 +214,6 @@ protected OrcStructInspector() { } @Override - public StructField getStructFieldRef(String s) { - for(StructField field: fields) { - if (field.getFieldName().equals(s)) { - return field; - } - } - return null; - } - - @Override public Object getStructFieldData(Object object, StructField field) { if (object == null) { return null; diff --git ql/src/java/org/apache/hadoop/hive/ql/io/parquet/serde/ArrayWritableObjectInspector.java ql/src/java/org/apache/hadoop/hive/ql/io/parquet/serde/ArrayWritableObjectInspector.java index d5aae3b..cf89777 100644 --- ql/src/java/org/apache/hadoop/hive/ql/io/parquet/serde/ArrayWritableObjectInspector.java +++ ql/src/java/org/apache/hadoop/hive/ql/io/parquet/serde/ArrayWritableObjectInspector.java @@ -152,7 +152,7 @@ public Object getStructFieldData(final Object data, final StructField fieldRef) @Override public StructField getStructFieldRef(final String name) { - return fieldsByName.get(name); + return fieldsByName.get(name.toLowerCase()); } @Override diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java index 37cbf7f..579b81b 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java @@ -306,11 +306,11 @@ public static String getUnescapedName(ASTNode tableOrColumnNode, String currentD if (tokenType == HiveParser.TOK_TABNAME) { // table node if (tableOrColumnNode.getChildCount() == 2) { - String dbName = unescapeIdentifier(tableOrColumnNode.getChild(0).getText()); - String tableName = unescapeIdentifier(tableOrColumnNode.getChild(1).getText()); + String dbName = toLowerString(tableOrColumnNode.getChild(0)); + String tableName = toLowerString(tableOrColumnNode.getChild(1)); return dbName + "." + tableName; } - String tableName = unescapeIdentifier(tableOrColumnNode.getChild(0).getText()); + String tableName = toLowerString(tableOrColumnNode.getChild(0)); if (currentDatabase != null) { return currentDatabase + "." + tableName; } @@ -319,7 +319,7 @@ public static String getUnescapedName(ASTNode tableOrColumnNode, String currentD return unescapeSQLString(tableOrColumnNode.getText()); } // column node - return unescapeIdentifier(tableOrColumnNode.getText()); + return toLowerString(tableOrColumnNode); } public static String[] getQualifiedTableName(ASTNode tabNameNode) throws SemanticException { @@ -328,11 +328,11 @@ public static String getUnescapedName(ASTNode tableOrColumnNode, String currentD throw new SemanticException(ErrorMsg.INVALID_TABLE_NAME.getMsg(tabNameNode)); } if (tabNameNode.getChildCount() == 2) { - String dbName = unescapeIdentifier(tabNameNode.getChild(0).getText()); - String tableName = unescapeIdentifier(tabNameNode.getChild(1).getText()); + String dbName = toLowerString(tabNameNode.getChild(0)); + String tableName = toLowerString(tabNameNode.getChild(1)); return new String[] {dbName, tableName}; } - String tableName = unescapeIdentifier(tabNameNode.getChild(0).getText()); + String tableName = toLowerString(tabNameNode.getChild(0)); return Utilities.getDbTableName(tableName); } @@ -612,7 +612,7 @@ private static String spliceString(String str, int i, int length, String replace int numCh = ast.getChildCount(); for (int i = 0; i < numCh; i++) { ASTNode child = (ASTNode) ast.getChild(i); - colList.add(unescapeIdentifier(child.getText()).toLowerCase()); + colList.add(toLowerString(child)); } return colList; } @@ -623,10 +623,10 @@ private static String spliceString(String str, int i, int length, String replace for (int i = 0; i < numCh; i++) { ASTNode child = (ASTNode) ast.getChild(i); if (child.getToken().getType() == HiveParser.TOK_TABSORTCOLNAMEASC) { - colList.add(new Order(unescapeIdentifier(child.getChild(0).getText()).toLowerCase(), + colList.add(new Order(toLowerString(child.getChild(0)), HIVE_COLUMN_ORDER_ASC)); } else { - colList.add(new Order(unescapeIdentifier(child.getChild(0).getText()).toLowerCase(), + colList.add(new Order(toLowerString(child.getChild(0)), HIVE_COLUMN_ORDER_DESC)); } } @@ -663,7 +663,8 @@ private static String getStructTypeStringFromAST(ASTNode typeNode) StringBuilder buffer = new StringBuilder(typeStr); for (int i = 0; i < children; i++) { ASTNode child = (ASTNode) typeNode.getChild(i); - buffer.append(unescapeIdentifier(child.getChild(0).getText())).append(":"); + Tree x = child.getChild(0); + buffer.append(toLowerString(x)).append(":"); buffer.append(getTypeStringFromAST((ASTNode) child.getChild(1))); if (i < children - 1) { buffer.append(","); @@ -674,6 +675,10 @@ private static String getStructTypeStringFromAST(ASTNode typeNode) return buffer.toString(); } + private static String toLowerString(Tree x) { + return unescapeIdentifier(x.getText()).toLowerCase(); + } + private static String getUnionTypeStringFromAST(ASTNode typeNode) throws SemanticException { String typeStr = serdeConstants.UNION_TYPE_NAME + "<"; @@ -765,7 +770,7 @@ public tableSpec(Hive db, HiveConf conf, ASTNode ast, boolean allowDynamicPartit for (int i = 0; i < partspec.getChildCount(); ++i) { ASTNode partspec_val = (ASTNode) partspec.getChild(i); String val = null; - String colName = unescapeIdentifier(partspec_val.getChild(0).getText().toLowerCase()); + String colName = toLowerString(partspec_val.getChild(0)); if (partspec_val.getChildCount() < 2) { // DP in the form of T partition (ds, hr) if (allowDynamicPartitionsSpec) { ++numDynParts; @@ -935,7 +940,7 @@ public void setUpdateColumnAccessInfo(ColumnAccessInfo updateColumnAccessInfo) { for (int i = 0; i < partspec.getChildCount(); ++i) { CommonTree partspec_val = (CommonTree) partspec.getChild(i); String val = stripQuotes(partspec_val.getChild(1).getText()); - partSpec.put(partspec_val.getChild(0).getText().toLowerCase(), val); + partSpec.put(toLowerString(partspec_val), val); } return partSpec; } diff --git ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java index 55392c9..d547d07 100644 --- ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java +++ ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestInputOutputFormat.java @@ -261,12 +261,11 @@ public String toString() { @Override public StructField getStructFieldRef(String fieldName) { - for(StructField field: FIELDS) { - if (field.getFieldName().equals(fieldName)) { - return field; - } + StructField field = super.getStructFieldRef(fieldName); + if (field == null) { + throw new IllegalArgumentException("Can't find field " + fieldName); } - throw new IllegalArgumentException("Can't find field " + fieldName); + return field; } @Override diff --git ql/src/test/queries/clientpositive/field_case_sensitivity.q ql/src/test/queries/clientpositive/field_case_sensitivity.q new file mode 100644 index 0000000..3de2fc0 --- /dev/null +++ ql/src/test/queries/clientpositive/field_case_sensitivity.q @@ -0,0 +1,47 @@ +drop table tabletxt; +drop table tableorc; +drop table tablerc; + +CREATE TABLE tabletxt ( + str STRING, + mp MAP, + lst ARRAY, + strct STRUCT +) ROW FORMAT DELIMITED + FIELDS TERMINATED BY '|' + COLLECTION ITEMS TERMINATED BY ',' + MAP KEYS TERMINATED BY ':'; +LOAD DATA LOCAL INPATH '../../data/files/struct.txt' INTO TABLE tabletxt; + +CREATE TABLE tablerc ( + str STRING, + mp MAP, + lst ARRAY, + strct STRUCT +) STORED AS RCFILE; + +CREATE TABLE tableorc ( + str STRING, + mp MAP, + lst ARRAY, + strct STRUCT +) STORED AS ORC; + +FROM tabletxt +INSERT OVERWRITE TABLE tablerc SELECT * +INSERT OVERWRITE TABLE tableorc SELECT *; + +select * from tabletxt; +select strct from tabletxt; +select strct.a from tabletxt; +select strct.A from tabletxt; + +select * from tablerc; +select strct from tablerc; +select strct.a from tablerc; +select strct.A from tablerc; + +select * from tableorc; +select strct from tableorc; +select strct.a from tableorc; +select strct.A from tableorc; diff --git ql/src/test/results/clientpositive/field_case_sensitivity.q.out ql/src/test/results/clientpositive/field_case_sensitivity.q.out new file mode 100644 index 0000000..27c9df9 --- /dev/null +++ ql/src/test/results/clientpositive/field_case_sensitivity.q.out @@ -0,0 +1,234 @@ +PREHOOK: query: drop table tabletxt +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table tabletxt +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table tableorc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table tableorc +POSTHOOK: type: DROPTABLE +PREHOOK: query: drop table tablerc +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table tablerc +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE tabletxt ( + str STRING, + mp MAP, + lst ARRAY, + strct STRUCT +) ROW FORMAT DELIMITED + FIELDS TERMINATED BY '|' + COLLECTION ITEMS TERMINATED BY ',' + MAP KEYS TERMINATED BY ':' +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@tabletxt +POSTHOOK: query: CREATE TABLE tabletxt ( + str STRING, + mp MAP, + lst ARRAY, + strct STRUCT +) ROW FORMAT DELIMITED + FIELDS TERMINATED BY '|' + COLLECTION ITEMS TERMINATED BY ',' + MAP KEYS TERMINATED BY ':' +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@tabletxt +PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/struct.txt' INTO TABLE tabletxt +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@tabletxt +POSTHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/struct.txt' INTO TABLE tabletxt +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@tabletxt +PREHOOK: query: CREATE TABLE tablerc ( + str STRING, + mp MAP, + lst ARRAY, + strct STRUCT +) STORED AS RCFILE +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@tablerc +POSTHOOK: query: CREATE TABLE tablerc ( + str STRING, + mp MAP, + lst ARRAY, + strct STRUCT +) STORED AS RCFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@tablerc +PREHOOK: query: CREATE TABLE tableorc ( + str STRING, + mp MAP, + lst ARRAY, + strct STRUCT +) STORED AS ORC +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@tableorc +POSTHOOK: query: CREATE TABLE tableorc ( + str STRING, + mp MAP, + lst ARRAY, + strct STRUCT +) STORED AS ORC +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@tableorc +PREHOOK: query: FROM tabletxt +INSERT OVERWRITE TABLE tablerc SELECT * +INSERT OVERWRITE TABLE tableorc SELECT * +PREHOOK: type: QUERY +PREHOOK: Input: default@tabletxt +PREHOOK: Output: default@tableorc +PREHOOK: Output: default@tablerc +POSTHOOK: query: FROM tabletxt +INSERT OVERWRITE TABLE tablerc SELECT * +INSERT OVERWRITE TABLE tableorc SELECT * +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tabletxt +POSTHOOK: Output: default@tableorc +POSTHOOK: Output: default@tablerc +POSTHOOK: Lineage: tableorc.lst SIMPLE [(tabletxt)tabletxt.FieldSchema(name:lst, type:array, comment:null), ] +POSTHOOK: Lineage: tableorc.mp SIMPLE [(tabletxt)tabletxt.FieldSchema(name:mp, type:map, comment:null), ] +POSTHOOK: Lineage: tableorc.str SIMPLE [(tabletxt)tabletxt.FieldSchema(name:str, type:string, comment:null), ] +POSTHOOK: Lineage: tableorc.strct SIMPLE [(tabletxt)tabletxt.FieldSchema(name:strct, type:struct, comment:null), ] +POSTHOOK: Lineage: tablerc.lst SIMPLE [(tabletxt)tabletxt.FieldSchema(name:lst, type:array, comment:null), ] +POSTHOOK: Lineage: tablerc.mp SIMPLE [(tabletxt)tabletxt.FieldSchema(name:mp, type:map, comment:null), ] +POSTHOOK: Lineage: tablerc.str SIMPLE [(tabletxt)tabletxt.FieldSchema(name:str, type:string, comment:null), ] +POSTHOOK: Lineage: tablerc.strct SIMPLE [(tabletxt)tabletxt.FieldSchema(name:strct, type:struct, comment:null), ] +PREHOOK: query: select * from tabletxt +PREHOOK: type: QUERY +PREHOOK: Input: default@tabletxt +#### A masked pattern was here #### +POSTHOOK: query: select * from tabletxt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tabletxt +#### A masked pattern was here #### +line1 {"key11":"value11","key12":"value12","key13":"value13"} ["a","b","c"] {"a":"one","b":"two"} +line2 {"key21":"value21","key22":"value22","key23":"value23"} ["d","e","f"] {"a":"three","b":"four"} +line3 {"key31":"value31","key32":"value32","key33":"value33"} ["g","h","i"] {"a":"five","b":"six"} +PREHOOK: query: select strct from tabletxt +PREHOOK: type: QUERY +PREHOOK: Input: default@tabletxt +#### A masked pattern was here #### +POSTHOOK: query: select strct from tabletxt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tabletxt +#### A masked pattern was here #### +{"a":"one","b":"two"} +{"a":"three","b":"four"} +{"a":"five","b":"six"} +PREHOOK: query: select strct.a from tabletxt +PREHOOK: type: QUERY +PREHOOK: Input: default@tabletxt +#### A masked pattern was here #### +POSTHOOK: query: select strct.a from tabletxt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tabletxt +#### A masked pattern was here #### +one +three +five +PREHOOK: query: select strct.A from tabletxt +PREHOOK: type: QUERY +PREHOOK: Input: default@tabletxt +#### A masked pattern was here #### +POSTHOOK: query: select strct.A from tabletxt +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tabletxt +#### A masked pattern was here #### +one +three +five +PREHOOK: query: select * from tablerc +PREHOOK: type: QUERY +PREHOOK: Input: default@tablerc +#### A masked pattern was here #### +POSTHOOK: query: select * from tablerc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tablerc +#### A masked pattern was here #### +line1 {"key11":"value11","key12":"value12","key13":"value13"} ["a","b","c"] {"a":"one","b":"two"} +line2 {"key21":"value21","key22":"value22","key23":"value23"} ["d","e","f"] {"a":"three","b":"four"} +line3 {"key31":"value31","key32":"value32","key33":"value33"} ["g","h","i"] {"a":"five","b":"six"} +PREHOOK: query: select strct from tablerc +PREHOOK: type: QUERY +PREHOOK: Input: default@tablerc +#### A masked pattern was here #### +POSTHOOK: query: select strct from tablerc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tablerc +#### A masked pattern was here #### +{"a":"one","b":"two"} +{"a":"three","b":"four"} +{"a":"five","b":"six"} +PREHOOK: query: select strct.a from tablerc +PREHOOK: type: QUERY +PREHOOK: Input: default@tablerc +#### A masked pattern was here #### +POSTHOOK: query: select strct.a from tablerc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tablerc +#### A masked pattern was here #### +one +three +five +PREHOOK: query: select strct.A from tablerc +PREHOOK: type: QUERY +PREHOOK: Input: default@tablerc +#### A masked pattern was here #### +POSTHOOK: query: select strct.A from tablerc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tablerc +#### A masked pattern was here #### +one +three +five +PREHOOK: query: select * from tableorc +PREHOOK: type: QUERY +PREHOOK: Input: default@tableorc +#### A masked pattern was here #### +POSTHOOK: query: select * from tableorc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tableorc +#### A masked pattern was here #### +line1 {"key12":"value12","key11":"value11","key13":"value13"} ["a","b","c"] {"a":"one","b":"two"} +line2 {"key21":"value21","key23":"value23","key22":"value22"} ["d","e","f"] {"a":"three","b":"four"} +line3 {"key33":"value33","key31":"value31","key32":"value32"} ["g","h","i"] {"a":"five","b":"six"} +PREHOOK: query: select strct from tableorc +PREHOOK: type: QUERY +PREHOOK: Input: default@tableorc +#### A masked pattern was here #### +POSTHOOK: query: select strct from tableorc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tableorc +#### A masked pattern was here #### +{"a":"one","b":"two"} +{"a":"three","b":"four"} +{"a":"five","b":"six"} +PREHOOK: query: select strct.a from tableorc +PREHOOK: type: QUERY +PREHOOK: Input: default@tableorc +#### A masked pattern was here #### +POSTHOOK: query: select strct.a from tableorc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tableorc +#### A masked pattern was here #### +one +three +five +PREHOOK: query: select strct.A from tableorc +PREHOOK: type: QUERY +PREHOOK: Input: default@tableorc +#### A masked pattern was here #### +POSTHOOK: query: select strct.A from tableorc +POSTHOOK: type: QUERY +POSTHOOK: Input: default@tableorc +#### A masked pattern was here #### +one +three +five diff --git serde/src/java/org/apache/hadoop/hive/serde2/BaseStructObjectInspector.java serde/src/java/org/apache/hadoop/hive/serde2/BaseStructObjectInspector.java index 2ad93ba..ebe2d12 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/BaseStructObjectInspector.java +++ serde/src/java/org/apache/hadoop/hive/serde2/BaseStructObjectInspector.java @@ -129,11 +129,6 @@ public final Category getCategory() { } @Override - public StructField getStructFieldRef(String fieldName) { - return ObjectInspectorUtils.getStandardStructFieldRef(fieldName, fields); - } - - @Override public List getAllStructFieldRefs() { return fields; } diff --git serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ReflectionStructObjectInspector.java serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ReflectionStructObjectInspector.java index 78e6066..0ceeef3 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ReflectionStructObjectInspector.java +++ serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/ReflectionStructObjectInspector.java @@ -145,11 +145,6 @@ public boolean shouldIgnoreField(String name) { // Without Data @Override - public StructField getStructFieldRef(String fieldName) { - return ObjectInspectorUtils.getStandardStructFieldRef(fieldName, fields); - } - - @Override public List getAllStructFieldRefs() { return fields; } diff --git serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardStructObjectInspector.java serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardStructObjectInspector.java index c96fc2d..3ed9ed9 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardStructObjectInspector.java +++ serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StandardStructObjectInspector.java @@ -143,11 +143,6 @@ public final Category getCategory() { // Without Data @Override - public StructField getStructFieldRef(String fieldName) { - return ObjectInspectorUtils.getStandardStructFieldRef(fieldName, fields); - } - - @Override public List getAllStructFieldRefs() { return fields; } diff --git serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StructObjectInspector.java serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StructObjectInspector.java index 0f58293..cb8bbfc 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StructObjectInspector.java +++ serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/StructObjectInspector.java @@ -34,7 +34,9 @@ /** * Look up a field. */ - public abstract StructField getStructFieldRef(String fieldName); + public StructField getStructFieldRef(String fieldName) { + return ObjectInspectorUtils.getStandardStructFieldRef(fieldName, getAllStructFieldRefs()); + } // ** Methods that need a data object ** /** diff --git serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/SubStructObjectInspector.java serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/SubStructObjectInspector.java index 2878072..0eccf95 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/SubStructObjectInspector.java +++ serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/SubStructObjectInspector.java @@ -68,11 +68,6 @@ public Category getCategory() { } @Override - public StructField getStructFieldRef(String fieldName) { - return ObjectInspectorUtils.getStandardStructFieldRef(fieldName, fields); - } - - @Override public Object getStructFieldData(Object data, StructField fieldRef) { return baseOI.getStructFieldData(data, fieldRef); } diff --git serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/UnionStructObjectInspector.java serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/UnionStructObjectInspector.java index 4658cc9..6cb106b 100644 --- serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/UnionStructObjectInspector.java +++ serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/UnionStructObjectInspector.java @@ -108,11 +108,6 @@ public String getTypeName() { // Without Data @Override - public StructField getStructFieldRef(String fieldName) { - return ObjectInspectorUtils.getStandardStructFieldRef(fieldName, fields); - } - - @Override public List getAllStructFieldRefs() { return fields; }