diff options
author | Michael Armbrust <michael@databricks.com> | 2014-11-14 14:56:57 -0800 |
---|---|---|
committer | Michael Armbrust <michael@databricks.com> | 2014-11-14 14:56:57 -0800 |
commit | a0300ea32a9d92bd51c72930bc3979087b0082b2 (patch) | |
tree | dc36ed60c3b9bfbdc3c5a14a4bacf6b761f7fa91 /sql/catalyst | |
parent | 5930f64bf0d2516304b21bd49eac361a54caabdd (diff) | |
download | spark-a0300ea32a9d92bd51c72930bc3979087b0082b2.tar.gz spark-a0300ea32a9d92bd51c72930bc3979087b0082b2.tar.bz2 spark-a0300ea32a9d92bd51c72930bc3979087b0082b2.zip |
[SPARK-4390][SQL] Handle NaN cast to decimal correctly
Author: Michael Armbrust <michael@databricks.com>
Closes #3256 from marmbrus/NanDecimal and squashes the following commits:
4c3ba46 [Michael Armbrust] fix style
d360f83 [Michael Armbrust] Handle NaN cast to decimal
Diffstat (limited to 'sql/catalyst')
-rw-r--r-- | sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Cast.scala | 6 |
1 files changed, 5 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 55319e7a79..34697a1249 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 @@ -290,7 +290,11 @@ case class Cast(child: Expression, dataType: DataType) extends UnaryExpression w case LongType => b => changePrecision(Decimal(b.asInstanceOf[Long]), target) case x: NumericType => // All other numeric types can be represented precisely as Doubles - b => changePrecision(Decimal(x.numeric.asInstanceOf[Numeric[Any]].toDouble(b)), target) + b => try { + changePrecision(Decimal(x.numeric.asInstanceOf[Numeric[Any]].toDouble(b)), target) + } catch { + case _: NumberFormatException => null + } } // DoubleConverter |