aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakuya UESHIN <ueshin@happy-camper.st>2016-11-25 20:25:29 -0800
committerReynold Xin <rxin@databricks.com>2016-11-25 20:25:29 -0800
commita88329d4553b40c45ebf9eacf229db7839d46769 (patch)
treefde3a06a6158df9db58bb5ed4863dae2e96f5f52
parente2fb9fd365466da888ab8b3a2a0836049a65f8c8 (diff)
downloadspark-a88329d4553b40c45ebf9eacf229db7839d46769.tar.gz
spark-a88329d4553b40c45ebf9eacf229db7839d46769.tar.bz2
spark-a88329d4553b40c45ebf9eacf229db7839d46769.zip
[SPARK-18583][SQL] Fix nullability of InputFileName.
## What changes were proposed in this pull request? The nullability of `InputFileName` should be `false`. ## How was this patch tested? Existing tests. Author: Takuya UESHIN <ueshin@happy-camper.st> Closes #16007 from ueshin/issues/SPARK-18583.
-rw-r--r--core/src/main/scala/org/apache/spark/rdd/InputFileNameHolder.scala10
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/InputFileName.scala2
2 files changed, 10 insertions, 2 deletions
diff --git a/core/src/main/scala/org/apache/spark/rdd/InputFileNameHolder.scala b/core/src/main/scala/org/apache/spark/rdd/InputFileNameHolder.scala
index f40d4c8e0a..960c91a154 100644
--- a/core/src/main/scala/org/apache/spark/rdd/InputFileNameHolder.scala
+++ b/core/src/main/scala/org/apache/spark/rdd/InputFileNameHolder.scala
@@ -22,6 +22,8 @@ import org.apache.spark.unsafe.types.UTF8String
/**
* This holds file names of the current Spark task. This is used in HadoopRDD,
* FileScanRDD, NewHadoopRDD and InputFileName function in Spark SQL.
+ *
+ * The returned value should never be null but empty string if it is unknown.
*/
private[spark] object InputFileNameHolder {
/**
@@ -32,9 +34,15 @@ private[spark] object InputFileNameHolder {
override protected def initialValue(): UTF8String = UTF8String.fromString("")
}
+ /**
+ * Returns the holding file name or empty string if it is unknown.
+ */
def getInputFileName(): UTF8String = inputFileName.get()
- private[spark] def setInputFileName(file: String) = inputFileName.set(UTF8String.fromString(file))
+ private[spark] def setInputFileName(file: String) = {
+ require(file != null, "The input file name cannot be null")
+ inputFileName.set(UTF8String.fromString(file))
+ }
private[spark] def unsetInputFileName(): Unit = inputFileName.remove()
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/InputFileName.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/InputFileName.scala
index b7fb285133..d412336699 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/InputFileName.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/InputFileName.scala
@@ -30,7 +30,7 @@ import org.apache.spark.unsafe.types.UTF8String
usage = "_FUNC_() - Returns the name of the current file being read if available.")
case class InputFileName() extends LeafExpression with Nondeterministic {
- override def nullable: Boolean = true
+ override def nullable: Boolean = false
override def dataType: DataType = StringType