@@ -25,7 +25,6 @@ import org.apache.hadoop.hive.ql.exec.Utilities
25
25
import org .apache .hadoop .hive .ql .metadata .{Partition => HivePartition , Table => HiveTable }
26
26
import org .apache .hadoop .hive .ql .plan .{PlanUtils , TableDesc }
27
27
import org .apache .hadoop .hive .serde2 .Deserializer
28
- import org .apache .hadoop .hive .serde2 .objectinspector .ObjectInspectorConverters .IdentityConverter
29
28
import org .apache .hadoop .hive .serde2 .objectinspector .{ObjectInspectorConverters , StructObjectInspector }
30
29
import org .apache .hadoop .hive .serde2 .objectinspector .primitive ._
31
30
import org .apache .hadoop .io .Writable
@@ -279,14 +278,16 @@ private[hive] object HadoopTableReader extends HiveInspectors {
279
278
mutableRow : MutableRow ,
280
279
tableDeser : Deserializer ): Iterator [Row ] = {
281
280
282
- val soi = HiveShim .getConvertedOI(
283
- rawDeser.getObjectInspector,
284
- tableDeser.getObjectInspector).asInstanceOf [StructObjectInspector ]
285
-
286
- val inputFields = soi.getAllStructFieldRefs
281
+ val soi = if (rawDeser.getObjectInspector.equals(tableDeser.getObjectInspector)) {
282
+ rawDeser.getObjectInspector.asInstanceOf [StructObjectInspector ]
283
+ } else {
284
+ HiveShim .getConvertedOI(
285
+ rawDeser.getObjectInspector,
286
+ tableDeser.getObjectInspector).asInstanceOf [StructObjectInspector ]
287
+ }
287
288
288
289
val (fieldRefs, fieldOrdinals) = nonPartitionKeyAttrs.map { case (attr, ordinal) =>
289
- (inputFields.get(ordinal), ordinal)
290
+ soi.getStructFieldRef(attr.name) -> ordinal
290
291
}.unzip
291
292
292
293
/**
@@ -329,11 +330,7 @@ private[hive] object HadoopTableReader extends HiveInspectors {
329
330
}
330
331
}
331
332
332
- val converter = if (rawDeser == tableDeser) {
333
- new IdentityConverter
334
- } else {
335
- ObjectInspectorConverters .getConverter(rawDeser.getObjectInspector, soi)
336
- }
333
+ val converter = ObjectInspectorConverters .getConverter(rawDeser.getObjectInspector, soi)
337
334
338
335
// Map each tuple to a row object
339
336
iterator.map { value =>
0 commit comments