Repository: carbondata Updated Branches: refs/heads/master 5f3264799 -> 668bfdd50
[CARBONDATA-2378][CarbonSearch] Support enable/disable search mode in ThriftServer This closes #2208 Project: http://git-wip-us.apache.org/repos/asf/carbondata/repo Commit: http://git-wip-us.apache.org/repos/asf/carbondata/commit/668bfdd5 Tree: http://git-wip-us.apache.org/repos/asf/carbondata/tree/668bfdd5 Diff: http://git-wip-us.apache.org/repos/asf/carbondata/diff/668bfdd5 Branch: refs/heads/master Commit: 668bfdd5028c87ad36eea48e2babc10134d17dc0 Parents: 5f32647 Author: Jacky Li <jacky.li...@qq.com> Authored: Sun Apr 22 22:32:57 2018 +0800 Committer: QiangCai <qiang...@qq.com> Committed: Mon Apr 23 16:25:54 2018 +0800 ---------------------------------------------------------------------- .../spark/testsuite/detailquery/SearchModeTestCase.scala | 9 ++++++++- .../main/scala/org/apache/spark/sql/CarbonSession.scala | 2 +- .../sql/hive/execution/command/CarbonHiveCommands.scala | 11 ++++++++++- 3 files changed, 19 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/carbondata/blob/668bfdd5/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/detailquery/SearchModeTestCase.scala ---------------------------------------------------------------------- diff --git a/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/detailquery/SearchModeTestCase.scala b/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/detailquery/SearchModeTestCase.scala index b55fa75..0e0628e 100644 --- a/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/detailquery/SearchModeTestCase.scala +++ b/integration/spark-common-test/src/test/scala/org/apache/carbondata/spark/testsuite/detailquery/SearchModeTestCase.scala @@ -99,4 +99,11 @@ class SearchModeTestCase extends QueryTest with BeforeAndAfterAll { checkSearchAnswer("select city, count(*) from main group by city") } -} \ No newline at end of file + test("set search mode") { + sql("set carbon.search.enabled = true") + assert(sqlContext.sparkSession.asInstanceOf[CarbonSession].isSearchModeEnabled) + checkSearchAnswer("select id from main where id = '3' limit 10") + sql("set carbon.search.enabled = false") + assert(!sqlContext.sparkSession.asInstanceOf[CarbonSession].isSearchModeEnabled) + } +} http://git-wip-us.apache.org/repos/asf/carbondata/blob/668bfdd5/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonSession.scala ---------------------------------------------------------------------- diff --git a/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonSession.scala b/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonSession.scala index c484a55..7da231a 100644 --- a/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonSession.scala +++ b/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonSession.scala @@ -110,7 +110,7 @@ class CarbonSession(@transient val sc: SparkContext, ) } - private def isSearchModeEnabled = carbonStore != null + def isSearchModeEnabled: Boolean = carbonStore != null /** * Run SparkSQL directly http://git-wip-us.apache.org/repos/asf/carbondata/blob/668bfdd5/integration/spark2/src/main/scala/org/apache/spark/sql/hive/execution/command/CarbonHiveCommands.scala ---------------------------------------------------------------------- diff --git a/integration/spark2/src/main/scala/org/apache/spark/sql/hive/execution/command/CarbonHiveCommands.scala b/integration/spark2/src/main/scala/org/apache/spark/sql/hive/execution/command/CarbonHiveCommands.scala index 80bcac2..10230a3 100644 --- a/integration/spark2/src/main/scala/org/apache/spark/sql/hive/execution/command/CarbonHiveCommands.scala +++ b/integration/spark2/src/main/scala/org/apache/spark/sql/hive/execution/command/CarbonHiveCommands.scala @@ -17,7 +17,7 @@ package org.apache.spark.sql.hive.execution.command -import org.apache.spark.sql.{CarbonEnv, Row, SparkSession} +import org.apache.spark.sql.{CarbonEnv, CarbonSession, Row, SparkSession} import org.apache.spark.sql.catalyst.TableIdentifier import org.apache.spark.sql.catalyst.analysis.NoSuchDatabaseException import org.apache.spark.sql.catalyst.expressions.Attribute @@ -72,6 +72,15 @@ case class CarbonSetCommand(command: SetCommand) command.kv match { case Some((key, Some(value))) => CarbonSetCommand.validateAndSetValue(sessionParms, key, value) + + // handle search mode start/stop for ThriftServer usage + if (key.equalsIgnoreCase(CarbonCommonConstants.CARBON_SEARCH_MODE_ENABLE)) { + if (value.equalsIgnoreCase("true")) { + sparkSession.asInstanceOf[CarbonSession].startSearchMode() + } else { + sparkSession.asInstanceOf[CarbonSession].stopSearchMode() + } + } case _ => }