Repository: carbondata Updated Branches: refs/heads/master 4014b0f54 -> 2c291d620
[CARBONDATA-2534][MV] Fix substring expression not working in MV creation Problem: The column generated when subquery expression column present is wrong while creating of MV table. Solution: Corrected the column name by removing special characters. This closes #2476 Project: http://git-wip-us.apache.org/repos/asf/carbondata/repo Commit: http://git-wip-us.apache.org/repos/asf/carbondata/commit/2c291d62 Tree: http://git-wip-us.apache.org/repos/asf/carbondata/tree/2c291d62 Diff: http://git-wip-us.apache.org/repos/asf/carbondata/diff/2c291d62 Branch: refs/heads/master Commit: 2c291d620a4f5585689f764a5e8ececeee09c735 Parents: 4014b0f Author: ravipesala <[email protected]> Authored: Sun Jul 15 17:42:59 2018 +0530 Committer: Jacky Li <[email protected]> Committed: Tue Jul 24 08:45:54 2018 +0800 ---------------------------------------------------------------------- .../org/apache/carbondata/mv/datamap/MVHelper.scala | 7 ++++++- .../apache/carbondata/mv/rewrite/MVCreateTestCase.scala | 12 ++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/carbondata/blob/2c291d62/datamap/mv/core/src/main/scala/org/apache/carbondata/mv/datamap/MVHelper.scala ---------------------------------------------------------------------- diff --git a/datamap/mv/core/src/main/scala/org/apache/carbondata/mv/datamap/MVHelper.scala b/datamap/mv/core/src/main/scala/org/apache/carbondata/mv/datamap/MVHelper.scala index fe761c0..8f79d64 100644 --- a/datamap/mv/core/src/main/scala/org/apache/carbondata/mv/datamap/MVHelper.scala +++ b/datamap/mv/core/src/main/scala/org/apache/carbondata/mv/datamap/MVHelper.scala @@ -119,7 +119,12 @@ object MVHelper { } def updateColumnName(attr: Attribute): String = { - val name = attr.name.replace("(", "_").replace(")", "").replace(" ", "_").replace("=", "") + val name = + attr.name.replace("(", "_") + .replace(")", "") + .replace(" ", "_") + .replace("=", "") + .replace(",", "") attr.qualifier.map(qualifier => qualifier + "_" + name).getOrElse(name) } http://git-wip-us.apache.org/repos/asf/carbondata/blob/2c291d62/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 4056f92..7ac3c83 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 @@ -750,6 +750,18 @@ class MVCreateTestCase extends QueryTest with BeforeAndAfterAll { sql("drop table if exists test1") } + test("jira carbondata-2534") { + + sql("drop datamap if exists MV_exp") + sql("create datamap MV_exp using 'mv' as select sum(salary),substring(empname,2,5),designation from fact_table1 group by substring(empname,2,5),designation") + sql("rebuild datamap MV_exp") + val frame = sql( + "select sum(salary),substring(empname,2,5),designation from fact_table1 group by substring(empname,2,5),designation") + val analyzed = frame.queryExecution.analyzed + assert(verifyMVDataMap(analyzed, "MV_exp")) + sql("drop datamap if exists MV_exp") + } + def verifyMVDataMap(logicalPlan: LogicalPlan, dataMapName: String): Boolean = { val tables = logicalPlan collect { case l: LogicalRelation => l.catalogTable.get
