Repository: spark Updated Branches: refs/heads/branch-1.6 8ac0ce6dd -> 10d513feb
[SPARK-14757] [SQL] Fix nullability bug in EqualNullSafe codegen This patch fixes a null handling bug in EqualNullSafe's code generation. Updated unit test so they would fail without the fix. Closes #12628. Author: Reynold Xin <[email protected]> Author: Arash Nabili <[email protected]> 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/10d513fe Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/10d513fe Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/10d513fe Branch: refs/heads/branch-1.6 Commit: 10d513feb4b657d62d576b39e97ad87a988a9e2a Parents: 8ac0ce6 Author: Reynold Xin <[email protected]> Authored: Fri Apr 29 22:26:12 2016 -0700 Committer: Davies Liu <[email protected]> Committed: Fri Apr 29 22:28:34 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/10d513fe/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 304b438..77e8506 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 @@ -416,7 +416,7 @@ case class EqualNullSafe(left: Expression, right: Expression) extends BinaryComp ev.isNull = "false" eval1.code + eval2.code + s""" boolean ${ev.value} = (${eval1.isNull} && ${eval2.isNull}) || - (!${eval1.isNull} && $equalCode); + (!${eval1.isNull} && !${eval2.isNull} && $equalCode); """ } } http://git-wip-us.apache.org/repos/asf/spark/blob/10d513fe/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: [email protected] For additional commands, e-mail: [email protected]
