You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by da...@apache.org on 2016/04/30 07:26:18 UTC

spark git commit: [SPARK-14757] [SQL] Fix nullability bug in EqualNullSafe codegen

Repository: spark
Updated Branches:
  refs/heads/master 90fa2c6e7 -> 7945f9f6d


[SPARK-14757] [SQL] Fix nullability bug in EqualNullSafe codegen

## What changes were proposed in this pull request?
This patch fixes a null handling bug in EqualNullSafe's code generation.

## How was this patch tested?
Updated unit test so they would fail without the fix.

Closes #12628.

Author: Reynold Xin <rx...@databricks.com>
Author: Arash Nabili <ar...@levyx.com>

Closes #12799 from rxin/equalnullsafe.


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

Branch: refs/heads/master
Commit: 7945f9f6d431453a192bea66f66fec813913e4c8
Parents: 90fa2c6
Author: Reynold Xin <rx...@databricks.com>
Authored: Fri Apr 29 22:26:12 2016 -0700
Committer: Davies Liu <da...@gmail.com>
Committed: Fri Apr 29 22:26:12 2016 -0700

----------------------------------------------------------------------
 .../org/apache/spark/sql/catalyst/expressions/predicates.scala    | 2 +-
 .../apache/spark/sql/catalyst/expressions/PredicateSuite.scala    | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/spark/blob/7945f9f6/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/predicates.scala
----------------------------------------------------------------------
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/predicates.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/predicates.scala
index 057c654..8a6cf53 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/predicates.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/predicates.scala
@@ -467,7 +467,7 @@ case class EqualNullSafe(left: Expression, right: Expression) extends BinaryComp
     val equalCode = ctx.genEqual(left.dataType, eval1.value, eval2.value)
     ev.copy(code = eval1.code + eval2.code + s"""
         boolean ${ev.value} = (${eval1.isNull} && ${eval2.isNull}) ||
-           (!${eval1.isNull} && $equalCode);""", isNull = "false")
+           (!${eval1.isNull} && !${eval2.isNull} && $equalCode);""", isNull = "false")
   }
 }
 

http://git-wip-us.apache.org/repos/asf/spark/blob/7945f9f6/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/PredicateSuite.scala
----------------------------------------------------------------------
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/PredicateSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/PredicateSuite.scala
index 03e7611..b3f2069 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/PredicateSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/PredicateSuite.scala
@@ -273,7 +273,8 @@ class PredicateSuite extends SparkFunSuite with ExpressionEvalHelper {
   }
 
   test("BinaryComparison: null test") {
-    val normalInt = Literal(1)
+    // Use -1 (default value for codegen) which can trigger some weird bugs, e.g. SPARK-14757
+    val normalInt = Literal(-1)
     val nullInt = Literal.create(null, IntegerType)
 
     def nullTest(op: (Expression, Expression) => Expression): Unit = {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org