You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@carbondata.apache.org by ch...@apache.org on 2016/06/30 17:42:11 UTC

[24/50] [abbrv] incubator-carbondata git commit: [issue-CARBONDATA-15] filter query throwing error if the query applied over a table having no data. (#760)

[issue-CARBONDATA-15] filter query throwing error if the query applied over a table having no data. (#760)



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

Branch: refs/heads/master
Commit: e88529f0f169cbf3b96728dad5594e396eb84045
Parents: 38d84e0
Author: Mohammad Shahid Khan <mo...@gmail.com>
Authored: Mon Jun 27 19:40:24 2016 +0530
Committer: Vimal-Das <vi...@gmail.com>
Committed: Mon Jun 27 07:10:24 2016 -0700

----------------------------------------------------------------------
 .../carbondata/spark/rdd/CarbonQueryRDD.scala   | 13 +++--
 .../filterexpr/FilterProcessorTestCase.scala    | 57 ++++++++++++--------
 2 files changed, 42 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/e88529f0/integration/spark/src/main/scala/org/carbondata/spark/rdd/CarbonQueryRDD.scala
----------------------------------------------------------------------
diff --git a/integration/spark/src/main/scala/org/carbondata/spark/rdd/CarbonQueryRDD.scala b/integration/spark/src/main/scala/org/carbondata/spark/rdd/CarbonQueryRDD.scala
index 60c6a78..f0a8706 100644
--- a/integration/spark/src/main/scala/org/carbondata/spark/rdd/CarbonQueryRDD.scala
+++ b/integration/spark/src/main/scala/org/carbondata/spark/rdd/CarbonQueryRDD.scala
@@ -80,11 +80,14 @@ class CarbonQueryRDD[K, V](
     val LOGGER = LogServiceFactory.getLogService(this.getClass.getName)
     // set filter resolver tree
     try {
-      var filterResolver = carbonInputFormat
-        .getResolvedFilter(job.getConfiguration, filterExpression)
-
-      CarbonInputFormat.setFilterPredicates(job.getConfiguration, filterResolver)
-      queryModel.setFilterExpressionResolverTree(filterResolver)
+      // before applying filter check whether segments are available in the table.
+      val splits = carbonInputFormat.getSplits(job)
+      if (!splits.isEmpty) {
+        var filterResolver = carbonInputFormat
+          .getResolvedFilter(job.getConfiguration, filterExpression)
+        CarbonInputFormat.setFilterPredicates(job.getConfiguration, filterResolver)
+        queryModel.setFilterExpressionResolverTree(filterResolver)
+      }
     }
     catch {
       case e: Exception =>

http://git-wip-us.apache.org/repos/asf/incubator-carbondata/blob/e88529f0/integration/spark/src/test/scala/org/carbondata/spark/testsuite/filterexpr/FilterProcessorTestCase.scala
----------------------------------------------------------------------
diff --git a/integration/spark/src/test/scala/org/carbondata/spark/testsuite/filterexpr/FilterProcessorTestCase.scala b/integration/spark/src/test/scala/org/carbondata/spark/testsuite/filterexpr/FilterProcessorTestCase.scala
index 41930df..cd34c97 100644
--- a/integration/spark/src/test/scala/org/carbondata/spark/testsuite/filterexpr/FilterProcessorTestCase.scala
+++ b/integration/spark/src/test/scala/org/carbondata/spark/testsuite/filterexpr/FilterProcessorTestCase.scala
@@ -19,14 +19,14 @@
 
 package org.carbondata.spark.testsuite.filterexpr
 
-import org.apache.spark.sql.common.util.CarbonHiveContext._
-import org.apache.spark.sql.common.util.QueryTest
-import org.apache.spark.sql.Row
-import org.scalatest.BeforeAndAfterAll
 import java.sql.Timestamp
 
+import org.apache.spark.sql.Row
+import org.apache.spark.sql.common.util.CarbonHiveContext._
+import org.apache.spark.sql.common.util.QueryTest
 import org.carbondata.core.constants.CarbonCommonConstants
 import org.carbondata.core.util.CarbonProperties
+import org.scalatest.BeforeAndAfterAll
 
 /**
   * Test Class for filter expression query on String datatypes
@@ -41,17 +41,21 @@ class FilterProcessorTestCase extends QueryTest with BeforeAndAfterAll {
     sql("drop table if exists filtertestTablesWithDecimal")
     sql("drop table if exists filtertestTablesWithNull")
     sql("drop table if exists filterWithTimeStamp")
+    sql("drop table if exists noloadtable")
     sql("CREATE TABLE filtertestTables (ID int, date Timestamp, country String, " +
       "name String, phonetype String, serialname String, salary int) " +
-        "STORED BY 'org.apache.carbondata.format'"
+      "STORED BY 'org.apache.carbondata.format'"
+    )
+    sql("CREATE TABLE noloadtable (ID int, date Timestamp, country String, " +
+      "name String, phonetype String, serialname String, salary int) " +
+      "STORED BY 'org.apache.carbondata.format'"
     )
-    
-     CarbonProperties.getInstance()
-        .addProperty(CarbonCommonConstants.CARBON_TIMESTAMP_FORMAT, "MM-dd-yyyy HH:mm:ss")
-        
+    CarbonProperties.getInstance()
+      .addProperty(CarbonCommonConstants.CARBON_TIMESTAMP_FORMAT, "MM-dd-yyyy HH:mm:ss")
+
     sql("CREATE TABLE filterWithTimeStamp (ID int, date Timestamp, country String, " +
       "name String, phonetype String, serialname String, salary int) " +
-        "STORED BY 'org.apache.carbondata.format'"
+      "STORED BY 'org.apache.carbondata.format'"
     )
     sql(
       s"LOAD DATA LOCAL INPATH './src/test/resources/data2_DiffTimeFormat.csv' INTO TABLE " +
@@ -59,15 +63,15 @@ class FilterProcessorTestCase extends QueryTest with BeforeAndAfterAll {
         s"OPTIONS('DELIMITER'= ',', " +
         s"'FILEHEADER'= '')"
     )
-    
-     test("Time stamp filter with diff time format for load ") {
-    checkAnswer(
-      sql("select date  from filterWithTimeStamp where date > '2014-07-10 00:00:00'"),
-      Seq(Row(Timestamp.valueOf("2014-07-20 00:00:00.0")),
-        Row(Timestamp.valueOf("2014-07-25 00:00:00.0"))
+
+    test("Time stamp filter with diff time format for load ") {
+      checkAnswer(
+        sql("select date  from filterWithTimeStamp where date > '2014-07-10 00:00:00'"),
+        Seq(Row(Timestamp.valueOf("2014-07-20 00:00:00.0")),
+          Row(Timestamp.valueOf("2014-07-25 00:00:00.0"))
+        )
       )
-    )
-  }
+    }
     CarbonProperties.getInstance()
       .addProperty(CarbonCommonConstants.CARBON_TIMESTAMP_FORMAT, "yyyy/MM/dd")
     sql(
@@ -79,7 +83,7 @@ class FilterProcessorTestCase extends QueryTest with BeforeAndAfterAll {
       "CREATE TABLE filtertestTablesWithDecimal (ID decimal, date Timestamp, country " +
         "String, " +
         "name String, phonetype String, serialname String, salary int) " +
-      "STORED BY 'org.apache.carbondata.format'"
+        "STORED BY 'org.apache.carbondata.format'"
     )
     sql(
       s"LOAD DATA LOCAL INPATH './src/test/resources/dataDiff.csv' INTO TABLE " +
@@ -91,7 +95,7 @@ class FilterProcessorTestCase extends QueryTest with BeforeAndAfterAll {
       "CREATE TABLE filtertestTablesWithNull (ID int, date Timestamp, country " +
         "String, " +
         "name String, phonetype String, serialname String,salary int) " +
-      "STORED BY 'org.apache.carbondata.format'"
+        "STORED BY 'org.apache.carbondata.format'"
     )
     CarbonProperties.getInstance()
       .addProperty(CarbonCommonConstants.CARBON_TIMESTAMP_FORMAT, "dd-MM-yyyy")
@@ -103,14 +107,14 @@ class FilterProcessorTestCase extends QueryTest with BeforeAndAfterAll {
     )
   }
 
-    
+
   test("Is not null filter") {
     checkAnswer(
       sql("select id from filtertestTablesWithNull " + "where id is not null"),
       Seq(Row(4), Row(6))
     )
   }
-    test("Multi column with invalid member filter") {
+  test("Multi column with invalid member filter") {
     checkAnswer(
       sql("select id from filtertestTablesWithNull " + "where id = salary"),
       Seq()
@@ -165,8 +169,15 @@ class FilterProcessorTestCase extends QueryTest with BeforeAndAfterAll {
     )
   }
 
+  test("filter query over table having no data") {
+    checkAnswer(
+      sql("select * from noloadtable " + "where country='china' and name='aaa1'"),
+      Seq()
+    )
+  }
+
   override def afterAll {
-    // sql("drop cube filtertestTable")
+    sql("drop cube noloadtable")
     CarbonProperties.getInstance()
       .addProperty(CarbonCommonConstants.CARBON_TIMESTAMP_FORMAT, "dd-MM-yyyy")
   }