aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveShim.scala6
-rw-r--r--sql/hive/src/test/scala/org/apache/spark/sql/hive/orc/OrcQuerySuite.scala25
2 files changed, 27 insertions, 4 deletions
diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveShim.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveShim.scala
index 0d2a765a38..9e9894803c 100644
--- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveShim.scala
+++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveShim.scala
@@ -69,13 +69,13 @@ private[hive] object HiveShim {
}
/*
- * Cannot use ColumnProjectionUtils.appendReadColumns directly, if ids is null or empty
+ * Cannot use ColumnProjectionUtils.appendReadColumns directly, if ids is null
*/
def appendReadColumns(conf: Configuration, ids: Seq[Integer], names: Seq[String]) {
- if (ids != null && ids.nonEmpty) {
+ if (ids != null) {
ColumnProjectionUtils.appendReadColumns(conf, ids.asJava)
}
- if (names != null && names.nonEmpty) {
+ if (names != null) {
appendReadColumnNames(conf, names)
}
}
diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/orc/OrcQuerySuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/orc/OrcQuerySuite.scala
index ecb5972984..a628977af2 100644
--- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/orc/OrcQuerySuite.scala
+++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/orc/OrcQuerySuite.scala
@@ -20,11 +20,13 @@ package org.apache.spark.sql.hive.orc
import java.nio.charset.StandardCharsets
import java.sql.Timestamp
+import org.apache.hadoop.conf.Configuration
+import org.apache.hadoop.hive.ql.io.orc.{OrcStruct, SparkOrcNewRecordReader}
import org.scalatest.BeforeAndAfterAll
import org.apache.spark.sql._
import org.apache.spark.sql.catalyst.TableIdentifier
-import org.apache.spark.sql.execution.datasources.LogicalRelation
+import org.apache.spark.sql.execution.datasources.{LogicalRelation, RecordReaderIterator}
import org.apache.spark.sql.hive.{HiveUtils, MetastoreRelation}
import org.apache.spark.sql.hive.test.TestHive._
import org.apache.spark.sql.hive.test.TestHive.implicits._
@@ -577,4 +579,25 @@ class OrcQuerySuite extends QueryTest with BeforeAndAfterAll with OrcTest {
assert(spark.table(tableName).schema == schema.copy(fields = expectedFields))
}
}
+
+ test("Empty schema does not read data from ORC file") {
+ val data = Seq((1, 1), (2, 2))
+ withOrcFile(data) { path =>
+ val requestedSchema = StructType(Nil)
+ val conf = new Configuration()
+ val physicalSchema = OrcFileOperator.readSchema(Seq(path), Some(conf)).get
+ OrcRelation.setRequiredColumns(conf, physicalSchema, requestedSchema)
+ val maybeOrcReader = OrcFileOperator.getFileReader(path, Some(conf))
+ assert(maybeOrcReader.isDefined)
+ val orcRecordReader = new SparkOrcNewRecordReader(
+ maybeOrcReader.get, conf, 0, maybeOrcReader.get.getContentLength)
+
+ val recordsIterator = new RecordReaderIterator[OrcStruct](orcRecordReader)
+ try {
+ assert(recordsIterator.next().toString == "{null, null}")
+ } finally {
+ recordsIterator.close()
+ }
+ }
+ }
}