[CARBONDATA-2542][MV] Fix the mv query from table with different database

Problem: database name is not added to the table name while generating mv query.
Solution: Add the database name to the table name while creating mv query.

This closes #2479


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

Branch: refs/heads/branch-1.4
Commit: 9680fd4489353d0d1e0b5c2b733b95d8ef6e4230
Parents: 5e22e9e
Author: ravipesala <[email protected]>
Authored: Sun Jul 15 17:38:47 2018 +0530
Committer: ravipesala <[email protected]>
Committed: Tue Jul 31 00:10:41 2018 +0530

----------------------------------------------------------------------
 .../mv/rewrite/MVCreateTestCase.scala           | 23 +++++++++++++++++++-
 .../carbondata/mv/plans/util/Printers.scala     |  2 +-
 2 files changed, 23 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/carbondata/blob/9680fd44/datamap/mv/core/src/test/scala/org/apache/carbondata/mv/rewrite/MVCreateTestCase.scala
----------------------------------------------------------------------
diff --git 
a/datamap/mv/core/src/test/scala/org/apache/carbondata/mv/rewrite/MVCreateTestCase.scala
 
b/datamap/mv/core/src/test/scala/org/apache/carbondata/mv/rewrite/MVCreateTestCase.scala
index 7ac3c83..264eb96 100644
--- 
a/datamap/mv/core/src/test/scala/org/apache/carbondata/mv/rewrite/MVCreateTestCase.scala
+++ 
b/datamap/mv/core/src/test/scala/org/apache/carbondata/mv/rewrite/MVCreateTestCase.scala
@@ -762,6 +762,28 @@ class MVCreateTestCase extends QueryTest with 
BeforeAndAfterAll {
     sql("drop datamap if exists MV_exp")
   }
 
+  test("jira carbondata-2542") {
+    sql("""drop database if exists xy cascade""")
+    sql("""create database if not exists xy""")
+    sql(
+      """
+        | CREATE TABLE xy.fact_tablexy (empname String, designation String, 
doj Timestamp,
+        |  workgroupcategory int, workgroupcategoryname String, deptno int, 
deptname String,
+        |  projectcode int, projectjoindate Timestamp, projectenddate 
Timestamp,attendance int,
+        |  utilization int,salary int)
+        | STORED BY 'org.apache.carbondata.format'
+      """.stripMargin)
+    sql("drop datamap if exists MV_exp")
+    sql("create datamap MV_exp using 'mv' as select doj,sum(salary) from 
xy.fact_tablexy group by doj")
+    sql("rebuild datamap MV_exp")
+    val frame = sql(
+      "select doj,sum(salary) from xy.fact_tablexy group by doj")
+    val analyzed = frame.queryExecution.analyzed
+    assert(verifyMVDataMap(analyzed, "MV_exp"))
+    sql("drop datamap if exists MV_exp")
+    sql("""drop database if exists xy cascade""")
+  }
+
   def verifyMVDataMap(logicalPlan: LogicalPlan, dataMapName: String): Boolean 
= {
     val tables = logicalPlan collect {
       case l: LogicalRelation => l.catalogTable.get
@@ -769,7 +791,6 @@ class MVCreateTestCase extends QueryTest with 
BeforeAndAfterAll {
     tables.exists(_.identifier.table.equalsIgnoreCase(dataMapName+"_table"))
   }
 
-
   def drop(): Unit = {
     sql("drop table IF EXISTS fact_table1")
     sql("drop table IF EXISTS fact_table2")

http://git-wip-us.apache.org/repos/asf/carbondata/blob/9680fd44/datamap/mv/plan/src/main/scala/org/apache/carbondata/mv/plans/util/Printers.scala
----------------------------------------------------------------------
diff --git 
a/datamap/mv/plan/src/main/scala/org/apache/carbondata/mv/plans/util/Printers.scala
 
b/datamap/mv/plan/src/main/scala/org/apache/carbondata/mv/plans/util/Printers.scala
index b7641d5..d3ce38d 100644
--- 
a/datamap/mv/plan/src/main/scala/org/apache/carbondata/mv/plans/util/Printers.scala
+++ 
b/datamap/mv/plan/src/main/scala/org/apache/carbondata/mv/plans/util/Printers.scala
@@ -180,7 +180,7 @@ trait Printers {
     }
 
     def printTable(name: Seq[String]): Unit = {
-      print("%s".format(name.last))
+      print("%s".format(name.mkString(".")))
     }
 
     trait ExprSeq extends Seq[SortOrder]

Reply via email to