http://git-wip-us.apache.org/repos/asf/carbondata/blob/2881c6bb/integration/spark2/src/main/spark2.2/org/apache/spark/sql/hive/CarbonAnalyzer.scala ---------------------------------------------------------------------- diff --git a/integration/spark2/src/main/spark2.2/org/apache/spark/sql/hive/CarbonAnalyzer.scala b/integration/spark2/src/main/spark2.2/org/apache/spark/sql/hive/CarbonAnalyzer.scala index 88beb68..dfb89fd 100644 --- a/integration/spark2/src/main/spark2.2/org/apache/spark/sql/hive/CarbonAnalyzer.scala +++ b/integration/spark2/src/main/spark2.2/org/apache/spark/sql/hive/CarbonAnalyzer.scala @@ -20,15 +20,32 @@ import org.apache.spark.sql.SparkSession import org.apache.spark.sql.catalyst.analysis.Analyzer import org.apache.spark.sql.catalyst.catalog.SessionCatalog import org.apache.spark.sql.catalyst.plans.logical.LogicalPlan +import org.apache.spark.sql.catalyst.rules.Rule import org.apache.spark.sql.internal.SQLConf +import org.apache.spark.util.CarbonReflectionUtils class CarbonAnalyzer(catalog: SessionCatalog, conf: SQLConf, sparkSession: SparkSession, analyzer: Analyzer) extends Analyzer(catalog, conf) { + + val mvPlan = try { + CarbonReflectionUtils.createObject( + "org.apache.carbondata.mv.datamap.MVAnalyzerRule", + sparkSession)._1.asInstanceOf[Rule[LogicalPlan]] + } catch { + case e: Exception => + null + } + override def execute(plan: LogicalPlan): LogicalPlan = { var logicalPlan = analyzer.execute(plan) logicalPlan = CarbonPreAggregateDataLoadingRules(sparkSession).apply(logicalPlan) - CarbonPreAggregateQueryRules(sparkSession).apply(logicalPlan) + logicalPlan = CarbonPreAggregateQueryRules(sparkSession).apply(logicalPlan) + if (mvPlan != null) { + mvPlan.apply(logicalPlan) + } else { + logicalPlan + } } } \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/carbondata/blob/2881c6bb/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 7273c76..e9551c0 100644 --- a/pom.xml +++ b/pom.xml @@ -640,6 +640,7 @@ <id>mv</id> <modules> <module>datamap/mv/plan</module> + <module>datamap/mv/core</module> </modules> </profile> </profiles>