aboutsummaryrefslogtreecommitdiff
path: root/sql/core/src/test
diff options
context:
space:
mode:
authorpetermaxlee <petermaxlee@gmail.com>2016-07-11 22:23:32 -0700
committerReynold Xin <rxin@databricks.com>2016-07-11 22:23:32 -0700
commitc9a6762150cfd62691a6361e05d2839b110fe8d0 (patch)
tree628a1d6e9c6f4f1c984d05bfab435e049d549ebf /sql/core/src/test
parentb1e5281c5cb429e338c3719c13c0b93078d7312a (diff)
downloadspark-c9a6762150cfd62691a6361e05d2839b110fe8d0.tar.gz
spark-c9a6762150cfd62691a6361e05d2839b110fe8d0.tar.bz2
spark-c9a6762150cfd62691a6361e05d2839b110fe8d0.zip
[SPARK-16199][SQL] Add a method to list the referenced columns in data source Filter
## What changes were proposed in this pull request? It would be useful to support listing the columns that are referenced by a filter. This can help simplify data source planning, because with this we would be able to implement unhandledFilters method in HadoopFsRelation. This is based on rxin's patch (#13901) and adds unit tests. ## How was this patch tested? Added a new suite FiltersSuite. Author: petermaxlee <petermaxlee@gmail.com> Author: Reynold Xin <rxin@databricks.com> Closes #14120 from petermaxlee/SPARK-16199.
Diffstat (limited to 'sql/core/src/test')
-rw-r--r--sql/core/src/test/scala/org/apache/spark/sql/sources/FiltersSuite.scala89
1 files changed, 89 insertions, 0 deletions
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/sources/FiltersSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/sources/FiltersSuite.scala
new file mode 100644
index 0000000000..1cb7a2156c
--- /dev/null
+++ b/sql/core/src/test/scala/org/apache/spark/sql/sources/FiltersSuite.scala
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.spark.sql.sources
+
+import org.apache.spark.SparkFunSuite
+
+/**
+ * Unit test suites for data source filters.
+ */
+class FiltersSuite extends SparkFunSuite {
+
+ test("EqualTo references") {
+ assert(EqualTo("a", "1").references.toSeq == Seq("a"))
+ assert(EqualTo("a", EqualTo("b", "2")).references.toSeq == Seq("a", "b"))
+ }
+
+ test("EqualNullSafe references") {
+ assert(EqualNullSafe("a", "1").references.toSeq == Seq("a"))
+ assert(EqualNullSafe("a", EqualTo("b", "2")).references.toSeq == Seq("a", "b"))
+ }
+
+ test("GreaterThan references") {
+ assert(GreaterThan("a", "1").references.toSeq == Seq("a"))
+ assert(GreaterThan("a", EqualTo("b", "2")).references.toSeq == Seq("a", "b"))
+ }
+
+ test("GreaterThanOrEqual references") {
+ assert(GreaterThanOrEqual("a", "1").references.toSeq == Seq("a"))
+ assert(GreaterThanOrEqual("a", EqualTo("b", "2")).references.toSeq == Seq("a", "b"))
+ }
+
+ test("LessThan references") {
+ assert(LessThan("a", "1").references.toSeq == Seq("a"))
+ assert(LessThan("a", EqualTo("b", "2")).references.toSeq == Seq("a", "b"))
+ }
+
+ test("LessThanOrEqual references") {
+ assert(LessThanOrEqual("a", "1").references.toSeq == Seq("a"))
+ assert(LessThanOrEqual("a", EqualTo("b", "2")).references.toSeq == Seq("a", "b"))
+ }
+
+ test("In references") {
+ assert(In("a", Array("1")).references.toSeq == Seq("a"))
+ assert(In("a", Array("1", EqualTo("b", "2"))).references.toSeq == Seq("a", "b"))
+ }
+
+ test("IsNull references") {
+ assert(IsNull("a").references.toSeq == Seq("a"))
+ }
+
+ test("IsNotNull references") {
+ assert(IsNotNull("a").references.toSeq == Seq("a"))
+ }
+
+ test("And references") {
+ assert(And(EqualTo("a", "1"), EqualTo("b", "1")).references.toSeq == Seq("a", "b"))
+ }
+
+ test("Or references") {
+ assert(Or(EqualTo("a", "1"), EqualTo("b", "1")).references.toSeq == Seq("a", "b"))
+ }
+
+ test("StringStartsWith references") {
+ assert(StringStartsWith("a", "str").references.toSeq == Seq("a"))
+ }
+
+ test("StringEndsWith references") {
+ assert(StringEndsWith("a", "str").references.toSeq == Seq("a"))
+ }
+
+ test("StringContains references") {
+ assert(StringContains("a", "str").references.toSeq == Seq("a"))
+ }
+}