Skip to content

Commit d6c93c5

Browse files
committed
fix bug
1 parent 1e8b30c commit d6c93c5

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

sql/hive/src/main/scala/org/apache/spark/sql/hive/TableReader.scala

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import org.apache.hadoop.hive.ql.exec.Utilities
2525
import org.apache.hadoop.hive.ql.metadata.{Partition => HivePartition, Table => HiveTable}
2626
import org.apache.hadoop.hive.ql.plan.{PlanUtils, TableDesc}
2727
import org.apache.hadoop.hive.serde2.Deserializer
28-
import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorConverters.IdentityConverter
2928
import org.apache.hadoop.hive.serde2.objectinspector.{ObjectInspectorConverters, StructObjectInspector}
3029
import org.apache.hadoop.hive.serde2.objectinspector.primitive._
3130
import org.apache.hadoop.io.Writable
@@ -279,14 +278,16 @@ private[hive] object HadoopTableReader extends HiveInspectors {
279278
mutableRow: MutableRow,
280279
tableDeser: Deserializer): Iterator[Row] = {
281280

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+
}
287288

288289
val (fieldRefs, fieldOrdinals) = nonPartitionKeyAttrs.map { case (attr, ordinal) =>
289-
(inputFields.get(ordinal), ordinal)
290+
soi.getStructFieldRef(attr.name) -> ordinal
290291
}.unzip
291292

292293
/**
@@ -329,11 +330,7 @@ private[hive] object HadoopTableReader extends HiveInspectors {
329330
}
330331
}
331332

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)
337334

338335
// Map each tuple to a row object
339336
iterator.map { value =>

0 commit comments

Comments
 (0)