aboutsummaryrefslogtreecommitdiff
path: root/sql/hive/src
diff options
context:
space:
mode:
authorJosh Rosen <joshrosen@databricks.com>2016-08-26 00:15:01 +0200
committerHerman van Hovell <hvanhovell@databricks.com>2016-08-26 00:15:01 +0200
commit3e4c7db4d11c474457e7886a5501108ebab0cf6d (patch)
treea2fa523867b5b90a47b7a03b6d55da5f9fc1c8dc /sql/hive/src
parenta133057ce5817f834babe9f25023092aec3c321d (diff)
downloadspark-3e4c7db4d11c474457e7886a5501108ebab0cf6d.tar.gz
spark-3e4c7db4d11c474457e7886a5501108ebab0cf6d.tar.bz2
spark-3e4c7db4d11c474457e7886a5501108ebab0cf6d.zip
[SPARK-17205] Literal.sql should handle Infinity and NaN
This patch updates `Literal.sql` to properly generate SQL for `NaN` and `Infinity` float and double literals: these special values need to be handled differently from regular values, since simply appending a suffix to the value's `toString()` representation will not work for these values. Author: Josh Rosen <joshrosen@databricks.com> Closes #14777 from JoshRosen/SPARK-17205.
Diffstat (limited to 'sql/hive/src')
-rw-r--r--sql/hive/src/test/scala/org/apache/spark/sql/catalyst/ExpressionSQLBuilderSuite.scala6
1 files changed, 6 insertions, 0 deletions
diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/catalyst/ExpressionSQLBuilderSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/catalyst/ExpressionSQLBuilderSuite.scala
index 93dc0f493e..86724cbb67 100644
--- a/sql/hive/src/test/scala/org/apache/spark/sql/catalyst/ExpressionSQLBuilderSuite.scala
+++ b/sql/hive/src/test/scala/org/apache/spark/sql/catalyst/ExpressionSQLBuilderSuite.scala
@@ -32,7 +32,13 @@ class ExpressionSQLBuilderSuite extends SQLBuilderTest {
checkSQL(Literal(4: Int), "4")
checkSQL(Literal(8: Long), "8L")
checkSQL(Literal(1.5F), "CAST(1.5 AS FLOAT)")
+ checkSQL(Literal(Float.PositiveInfinity), "CAST('Infinity' AS FLOAT)")
+ checkSQL(Literal(Float.NegativeInfinity), "CAST('-Infinity' AS FLOAT)")
+ checkSQL(Literal(Float.NaN), "CAST('NaN' AS FLOAT)")
checkSQL(Literal(2.5D), "2.5D")
+ checkSQL(Literal(Double.PositiveInfinity), "CAST('Infinity' AS DOUBLE)")
+ checkSQL(Literal(Double.NegativeInfinity), "CAST('-Infinity' AS DOUBLE)")
+ checkSQL(Literal(Double.NaN), "CAST('NaN' AS DOUBLE)")
checkSQL(
Literal(Timestamp.valueOf("2016-01-01 00:00:00")), "TIMESTAMP('2016-01-01 00:00:00.0')")
// TODO tests for decimals