aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveInspectors.scala4
-rw-r--r--sql/hive/src/main/scala/org/apache/spark/sql/hive/TableReader.scala15
2 files changed, 15 insertions, 4 deletions
diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveInspectors.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveInspectors.scala
index 58815daa82..bdc7e1dac1 100644
--- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveInspectors.scala
+++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveInspectors.scala
@@ -119,10 +119,6 @@ private[hive] trait HiveInspectors {
* Wraps with Hive types based on object inspector.
* TODO: Consolidate all hive OI/data interface code.
*/
- /**
- * Wraps with Hive types based on object inspector.
- * TODO: Consolidate all hive OI/data interface code.
- */
protected def wrapperFor(oi: ObjectInspector): Any => Any = oi match {
case _: JavaHiveVarcharObjectInspector =>
(o: Any) => new HiveVarchar(o.asInstanceOf[String], o.asInstanceOf[String].size)
diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/TableReader.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/TableReader.scala
index e49f0957d1..f60bc3788e 100644
--- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/TableReader.scala
+++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/TableReader.scala
@@ -290,6 +290,21 @@ private[hive] object HadoopTableReader extends HiveInspectors {
(value: Any, row: MutableRow, ordinal: Int) => row.setFloat(ordinal, oi.get(value))
case oi: DoubleObjectInspector =>
(value: Any, row: MutableRow, ordinal: Int) => row.setDouble(ordinal, oi.get(value))
+ case oi: HiveVarcharObjectInspector =>
+ (value: Any, row: MutableRow, ordinal: Int) =>
+ row.setString(ordinal, oi.getPrimitiveJavaObject(value).getValue)
+ case oi: HiveDecimalObjectInspector =>
+ (value: Any, row: MutableRow, ordinal: Int) =>
+ row.update(ordinal, HiveShim.toCatalystDecimal(oi, value))
+ case oi: TimestampObjectInspector =>
+ (value: Any, row: MutableRow, ordinal: Int) =>
+ row.update(ordinal, oi.getPrimitiveJavaObject(value).clone())
+ case oi: DateObjectInspector =>
+ (value: Any, row: MutableRow, ordinal: Int) =>
+ row.update(ordinal, oi.getPrimitiveJavaObject(value))
+ case oi: BinaryObjectInspector =>
+ (value: Any, row: MutableRow, ordinal: Int) =>
+ row.update(ordinal, oi.getPrimitiveJavaObject(value))
case oi =>
(value: Any, row: MutableRow, ordinal: Int) => row(ordinal) = unwrap(value, oi)
}