Repository: spark
Updated Branches:
  refs/heads/master 66107f46f -> 080088105


[SPARK-3676][SQL] Fix hive test suite failure due to diffs in JDK 1.6/1.7

This is a bug in JDK6: 
http://bugs.java.com/bugdatabase/view_bug.do?bug_id=4428022

this is because jdk get different result to operate ```double```,
```System.out.println(1/500d)``` in different jdk get different result
jdk 1.6.0(_31) ---- 0.0020
jdk 1.7.0(_05) ---- 0.002
this leads to HiveQuerySuite failed when generate golden answer in jdk 1.7 and 
run tests in jdk 1.6, result did not match

Author: w00228970 <[email protected]>

Closes #2517 from scwf/HiveQuerySuite and squashes the following commits:

0cb5e8d [w00228970] delete golden answer of division-0 and timestamp cast #1
1df3964 [w00228970] Jdk version leads to different query output for Double, 
this make HiveQuerySuite failed


Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/08008810
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/08008810
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/08008810

Branch: refs/heads/master
Commit: 0800881051df8029afb22a4ec17970e316a85855
Parents: 66107f4
Author: w00228970 <[email protected]>
Authored: Sat Sep 27 12:06:06 2014 -0700
Committer: Michael Armbrust <[email protected]>
Committed: Sat Sep 27 12:06:16 2014 -0700

----------------------------------------------------------------------
 .../division-0-63b19f8a22471c8ba0415c1d3bc276f7      |  1 -
 ...estamp cast #1-0-69fc614ccea92bbe39f4decc299edcc6 |  1 -
 .../spark/sql/hive/execution/HiveQuerySuite.scala    | 15 +++++++++++----
 3 files changed, 11 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/spark/blob/08008810/sql/hive/src/test/resources/golden/division-0-63b19f8a22471c8ba0415c1d3bc276f7
----------------------------------------------------------------------
diff --git 
a/sql/hive/src/test/resources/golden/division-0-63b19f8a22471c8ba0415c1d3bc276f7
 
b/sql/hive/src/test/resources/golden/division-0-63b19f8a22471c8ba0415c1d3bc276f7
deleted file mode 100644
index 7b7a917..0000000
--- 
a/sql/hive/src/test/resources/golden/division-0-63b19f8a22471c8ba0415c1d3bc276f7
+++ /dev/null
@@ -1 +0,0 @@
-2.0    0.5     0.3333333333333333      0.002

http://git-wip-us.apache.org/repos/asf/spark/blob/08008810/sql/hive/src/test/resources/golden/timestamp
 cast #1-0-69fc614ccea92bbe39f4decc299edcc6
----------------------------------------------------------------------
diff --git a/sql/hive/src/test/resources/golden/timestamp cast 
#1-0-69fc614ccea92bbe39f4decc299edcc6 
b/sql/hive/src/test/resources/golden/timestamp cast 
#1-0-69fc614ccea92bbe39f4decc299edcc6
deleted file mode 100644
index 8ebf695..0000000
--- a/sql/hive/src/test/resources/golden/timestamp cast 
#1-0-69fc614ccea92bbe39f4decc299edcc6   
+++ /dev/null
@@ -1 +0,0 @@
-0.001

http://git-wip-us.apache.org/repos/asf/spark/blob/08008810/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala
----------------------------------------------------------------------
diff --git 
a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala
 
b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala
index 2f876ca..2da8a6f 100644
--- 
a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala
+++ 
b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala
@@ -135,8 +135,12 @@ class HiveQuerySuite extends HiveComparisonTest {
   createQueryTest("div",
     "SELECT 1 DIV 2, 1 div 2, 1 dIv 2, 100 DIV 51, 100 DIV 49 FROM src LIMIT 
1")
 
-  createQueryTest("division",
-    "SELECT 2 / 1, 1 / 2, 1 / 3, 1 / COUNT(*) FROM src LIMIT 1")
+  // Jdk version leads to different query output for double, so not use 
createQueryTest here
+  test("division") {
+    val res = sql("SELECT 2 / 1, 1 / 2, 1 / 3, 1 / COUNT(*) FROM src LIMIT 
1").collect().head
+    Seq(2.0, 0.5, 0.3333333333333333, 0.002).zip(res).foreach( x =>
+      assert(x._1 == x._2.asInstanceOf[Double]))
+  }
 
   createQueryTest("modulus",
     "SELECT 11 % 10, IF((101.1 % 100.0) BETWEEN 1.01 AND 1.11, \"true\", 
\"false\"), (101 / 2) % 10 FROM src LIMIT 1")
@@ -306,8 +310,11 @@ class HiveQuerySuite extends HiveComparisonTest {
   createQueryTest("case statements WITHOUT key #4",
     "SELECT (CASE WHEN key > 2 THEN 3 WHEN 2 > key THEN 2 ELSE 0 END) FROM src 
WHERE key < 15")
 
-  createQueryTest("timestamp cast #1",
-    "SELECT CAST(CAST(1 AS TIMESTAMP) AS DOUBLE) FROM src LIMIT 1")
+  // Jdk version leads to different query output for double, so not use 
createQueryTest here
+  test("timestamp cast #1") {
+    val res = sql("SELECT CAST(CAST(1 AS TIMESTAMP) AS DOUBLE) FROM src LIMIT 
1").collect().head
+    assert(0.001 == res.getDouble(0))
+  }
 
   createQueryTest("timestamp cast #2",
     "SELECT CAST(CAST(1.2 AS TIMESTAMP) AS DOUBLE) FROM src LIMIT 1")


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to