aboutsummaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorTakuya UESHIN <ueshin@happy-camper.st>2014-11-07 12:30:47 -0800
committerMichael Armbrust <michael@databricks.com>2014-11-07 12:30:47 -0800
commita6405c5ddcda112f8efd7d50d8e5f44f78a0fa41 (patch)
tree70e09fc11f33b216f4cb00d2d268665333efb0af /sql
parent60ab80f501b8384ddf48a9ac0ba0c2b9eb548b28 (diff)
downloadspark-a6405c5ddcda112f8efd7d50d8e5f44f78a0fa41.tar.gz
spark-a6405c5ddcda112f8efd7d50d8e5f44f78a0fa41.tar.bz2
spark-a6405c5ddcda112f8efd7d50d8e5f44f78a0fa41.zip
[SPARK-4270][SQL] Fix Cast from DateType to DecimalType.
`Cast` from `DateType` to `DecimalType` throws `NullPointerException`. Author: Takuya UESHIN <ueshin@happy-camper.st> Closes #3134 from ueshin/issues/SPARK-4270 and squashes the following commits: 7394e4b [Takuya UESHIN] Fix Cast from DateType to DecimalType.
Diffstat (limited to 'sql')
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Cast.scala2
-rw-r--r--sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/ExpressionEvaluationSuite.scala2
2 files changed, 3 insertions, 1 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Cast.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Cast.scala
index 2200966619..55319e7a79 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Cast.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Cast.scala
@@ -281,7 +281,7 @@ case class Cast(child: Expression, dataType: DataType) extends UnaryExpression w
case BooleanType =>
buildCast[Boolean](_, b => changePrecision(if (b) Decimal(1) else Decimal(0), target))
case DateType =>
- buildCast[Date](_, d => changePrecision(null, target)) // date can't cast to decimal in Hive
+ buildCast[Date](_, d => null) // date can't cast to decimal in Hive
case TimestampType =>
// Note that we lose precision here.
buildCast[Timestamp](_, t => changePrecision(Decimal(timestampToDouble(t)), target))
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/ExpressionEvaluationSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/ExpressionEvaluationSuite.scala
index 6bfa0dbd65..918996f11d 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/ExpressionEvaluationSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/ExpressionEvaluationSuite.scala
@@ -412,6 +412,8 @@ class ExpressionEvaluationSuite extends FunSuite {
checkEvaluation(Cast(d, LongType), null)
checkEvaluation(Cast(d, FloatType), null)
checkEvaluation(Cast(d, DoubleType), null)
+ checkEvaluation(Cast(d, DecimalType.Unlimited), null)
+ checkEvaluation(Cast(d, DecimalType(10, 2)), null)
checkEvaluation(Cast(d, StringType), "1970-01-01")
checkEvaluation(Cast(Cast(d, TimestampType), StringType), "1970-01-01 00:00:00")
}