You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@carbondata.apache.org by ja...@apache.org on 2018/12/11 15:27:02 UTC

carbondata git commit: [CARBONDATA-3116] Support set carbon.query.directQueryOnDataMap.enabled=true

Repository: carbondata
Updated Branches:
  refs/heads/master f599cb114 -> 1f4614a2c


[CARBONDATA-3116] Support set carbon.query.directQueryOnDataMap.enabled=true

This PR fix the error:User can query on dataMap after set carbon.query.directQueryOnDataMap.enabled=true.

This closes #2940


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

Branch: refs/heads/master
Commit: 1f4614a2ce6cbdd7246ea3c6da19a16754386fdd
Parents: f599cb1
Author: xubo245 <xu...@huawei.com>
Authored: Thu Nov 22 00:32:13 2018 +0800
Committer: Jacky Li <ja...@qq.com>
Committed: Tue Dec 11 23:26:47 2018 +0800

----------------------------------------------------------------------
 .../preaggregate/TestPreAggCreateCommand.scala  | 43 ++++++++++++++++++++
 .../sql/optimizer/CarbonLateDecodeRule.scala    |  8 ++--
 2 files changed, 48 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/carbondata/blob/1f4614a2/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/preaggregate/TestPreAggCreateCommand.scala
----------------------------------------------------------------------
diff --git a/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/preaggregate/TestPreAggCreateCommand.scala b/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/preaggregate/TestPreAggCreateCommand.scala
index 7851bd1..f07c417 100644
--- a/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/preaggregate/TestPreAggCreateCommand.scala
+++ b/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/preaggregate/TestPreAggCreateCommand.scala
@@ -17,6 +17,7 @@
 
 package org.apache.carbondata.integration.spark.testsuite.preaggregate
 
+import java.io.File
 import java.util
 import java.util.concurrent.{Callable, ExecutorService, Executors, TimeUnit}
 
@@ -486,6 +487,48 @@ class TestPreAggCreateCommand extends QueryTest with BeforeAndAfterAll {
     executorService.shutdown()
   }
 
+  test("support set carbon.query.directQueryOnDataMap.enabled=true") {
+    val rootPath = new File(this.getClass.getResource("/").getPath
+      + "../../../..").getCanonicalPath
+    val testData = s"$rootPath/integration/spark-common-test/src/test/resources/sample.csv"
+    sql("drop table if exists mainTable")
+    sql(
+      s"""
+         | CREATE TABLE mainTable
+         |   (id Int,
+         |   name String,
+         |   city String,
+         |   age Int)
+         | STORED BY 'org.apache.carbondata.format'
+      """.stripMargin)
+
+    sql(
+      s"""
+         | LOAD DATA LOCAL INPATH '$testData'
+         | into table mainTable
+       """.stripMargin)
+
+    sql(
+      s"""
+         | create datamap preagg_sum on table mainTable
+         | using 'preaggregate'
+         | as select id,sum(age) from mainTable group by id
+       """.stripMargin)
+
+    CarbonProperties.getInstance()
+      .addProperty(CarbonCommonConstants.VALIDATE_DIRECT_QUERY_ON_DATAMAP, "true")
+
+    sql("set carbon.query.directQueryOnDataMap.enabled=true")
+    checkAnswer(sql("select count(*) from maintable_preagg_sum"), Row(4))
+    sql("set carbon.query.directQueryOnDataMap.enabled=false")
+    val exception: Exception = intercept[AnalysisException] {
+      sql("select count(*) from maintable_preagg_sum").collect()
+    }
+    assert(exception.getMessage.contains("Query On DataMap not supported"))
+    CarbonProperties.getInstance()
+      .addProperty(CarbonCommonConstants.VALIDATE_DIRECT_QUERY_ON_DATAMAP, "false")
+  }
+
   class QueryTask(query: String) extends Callable[String] {
     override def call(): String = {
       var result = "SUCCESS"

http://git-wip-us.apache.org/repos/asf/carbondata/blob/1f4614a2/integration/spark2/src/main/scala/org/apache/spark/sql/optimizer/CarbonLateDecodeRule.scala
----------------------------------------------------------------------
diff --git a/integration/spark2/src/main/scala/org/apache/spark/sql/optimizer/CarbonLateDecodeRule.scala b/integration/spark2/src/main/scala/org/apache/spark/sql/optimizer/CarbonLateDecodeRule.scala
index 48c6377..36eb9ce 100644
--- a/integration/spark2/src/main/scala/org/apache/spark/sql/optimizer/CarbonLateDecodeRule.scala
+++ b/integration/spark2/src/main/scala/org/apache/spark/sql/optimizer/CarbonLateDecodeRule.scala
@@ -119,7 +119,7 @@ class CarbonLateDecodeRule extends Rule[LogicalPlan] with PredicateHelper {
     if (validateQuery && isPreAggDataMapExists) {
       val carbonSessionInfo = ThreadLocalSessionInfo.getCarbonSessionInfo
       if (null != carbonSessionInfo) {
-        val supportQueryOnDataMap = CarbonEnv.getThreadParam(
+        val supportQueryOnDataMap = CarbonProperties.getInstance.getProperty(
           CarbonCommonConstants.SUPPORT_DIRECT_QUERY_ON_DATAMAP,
             CarbonCommonConstants.SUPPORT_DIRECT_QUERY_ON_DATAMAP_DEFAULTVALUE).toBoolean
         if (!supportQueryOnDataMap) {
@@ -127,8 +127,10 @@ class CarbonLateDecodeRule extends Rule[LogicalPlan] with PredicateHelper {
         }
       }
     }
-    if(isThrowException) {
-      throw new AnalysisException("Query On DataMap not supported")
+    if (isThrowException) {
+      throw new AnalysisException("Query On DataMap not supported because "
+        + CarbonCommonConstants.SUPPORT_DIRECT_QUERY_ON_DATAMAP + " is false. " +
+        "Please change the value to true by set command or other if you want to query on DataMap.")
     }
   }