You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@carbondata.apache.org by ra...@apache.org on 2018/12/17 14:16:52 UTC
[10/21] carbondata git commit: [CARBONDATA-3116] Support set
carbon.query.directQueryOnDataMap.enabled=true
[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/26a58508
Tree: http://git-wip-us.apache.org/repos/asf/carbondata/tree/26a58508
Diff: http://git-wip-us.apache.org/repos/asf/carbondata/diff/26a58508
Branch: refs/heads/branch-1.5
Commit: 26a585083fb7887d66c85c3ee27fcae205595742
Parents: 7d7d547
Author: xubo245 <xu...@huawei.com>
Authored: Thu Nov 22 00:32:13 2018 +0800
Committer: Raghunandan S <ca...@gmail.com>
Committed: Mon Dec 17 18:58:33 2018 +0530
----------------------------------------------------------------------
.../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/26a58508/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/26a58508/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.")
}
}