Repository: spark
Updated Branches:
  refs/heads/branch-1.5 e9d1eab92 -> eead87ef2


[SPARK-9814] [SQL] EqualNotNull not passing to data sources

Author: hyukjinkwon <gurwls...@gmail.com>
Author: 권혁진 <gurwls...@gmail.com>

Closes #8096 from HyukjinKwon/master.

(cherry picked from commit 00c02728a6c6c4282c389ca90641dd78dd5e3d32)
Signed-off-by: Reynold Xin <r...@databricks.com>


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

Branch: refs/heads/branch-1.5
Commit: eead87ef2459a8c1d5257ea0b22526a76ddf1f69
Parents: e9d1eab
Author: hyukjinkwon <gurwls...@gmail.com>
Authored: Tue Aug 11 14:04:09 2015 -0700
Committer: Reynold Xin <r...@databricks.com>
Committed: Tue Aug 11 14:04:23 2015 -0700

----------------------------------------------------------------------
 .../sql/execution/datasources/DataSourceStrategy.scala      | 5 +++++
 .../main/scala/org/apache/spark/sql/sources/filters.scala   | 9 +++++++++
 .../org/apache/spark/sql/sources/FilteredScanSuite.scala    | 1 +
 3 files changed, 15 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/spark/blob/eead87ef/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/DataSourceStrategy.scala
----------------------------------------------------------------------
diff --git 
a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/DataSourceStrategy.scala
 
b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/DataSourceStrategy.scala
index 78a4acd..2a4c40d 100644
--- 
a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/DataSourceStrategy.scala
+++ 
b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/DataSourceStrategy.scala
@@ -349,6 +349,11 @@ private[sql] object DataSourceStrategy extends Strategy 
with Logging {
       case expressions.EqualTo(Literal(v, _), a: Attribute) =>
         Some(sources.EqualTo(a.name, v))
 
+      case expressions.EqualNullSafe(a: Attribute, Literal(v, _)) =>
+        Some(sources.EqualNullSafe(a.name, v))
+      case expressions.EqualNullSafe(Literal(v, _), a: Attribute) =>
+        Some(sources.EqualNullSafe(a.name, v))
+
       case expressions.GreaterThan(a: Attribute, Literal(v, _)) =>
         Some(sources.GreaterThan(a.name, v))
       case expressions.GreaterThan(Literal(v, _), a: Attribute) =>

http://git-wip-us.apache.org/repos/asf/spark/blob/eead87ef/sql/core/src/main/scala/org/apache/spark/sql/sources/filters.scala
----------------------------------------------------------------------
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/sources/filters.scala 
b/sql/core/src/main/scala/org/apache/spark/sql/sources/filters.scala
index 4d942e4..3780cbb 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/sources/filters.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/sources/filters.scala
@@ -37,6 +37,15 @@ abstract class Filter
 case class EqualTo(attribute: String, value: Any) extends Filter
 
 /**
+ * Performs equality comparison, similar to [[EqualTo]]. However, this differs 
from [[EqualTo]]
+ * in that it returns `true` (rather than NULL) if both inputs are NULL, and 
`false`
+ * (rather than NULL) if one of the input is NULL and the other is not NULL.
+ *
+ * @since 1.5.0
+ */
+case class EqualNullSafe(attribute: String, value: Any) extends Filter
+
+/**
  * A filter that evaluates to `true` iff the attribute evaluates to a value
  * greater than `value`.
  *

http://git-wip-us.apache.org/repos/asf/spark/blob/eead87ef/sql/core/src/test/scala/org/apache/spark/sql/sources/FilteredScanSuite.scala
----------------------------------------------------------------------
diff --git 
a/sql/core/src/test/scala/org/apache/spark/sql/sources/FilteredScanSuite.scala 
b/sql/core/src/test/scala/org/apache/spark/sql/sources/FilteredScanSuite.scala
index 81b3a0f..5ef3657 100644
--- 
a/sql/core/src/test/scala/org/apache/spark/sql/sources/FilteredScanSuite.scala
+++ 
b/sql/core/src/test/scala/org/apache/spark/sql/sources/FilteredScanSuite.scala
@@ -56,6 +56,7 @@ case class SimpleFilteredScan(from: Int, to: Int)(@transient 
val sqlContext: SQL
     // Predicate test on integer column
     def translateFilterOnA(filter: Filter): Int => Boolean = filter match {
       case EqualTo("a", v) => (a: Int) => a == v
+      case EqualNullSafe("a", v) => (a: Int) => a == v
       case LessThan("a", v: Int) => (a: Int) => a < v
       case LessThanOrEqual("a", v: Int) => (a: Int) => a <= v
       case GreaterThan("a", v: Int) => (a: Int) => a > v


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

Reply via email to