Indhumathi27 commented on a change in pull request #3690: [CARBONDATA-3762] Block creating Materialized view's with duplicate column URL: https://github.com/apache/carbondata/pull/3690#discussion_r404585118
########## File path: mv/core/src/test/scala/org/apache/carbondata/mv/rewrite/TestAllOperationsOnMV.scala ########## @@ -626,6 +626,49 @@ class TestAllOperationsOnMV extends QueryTest with BeforeAndAfterEach { sql("drop table IF EXISTS maintable") } + test("test duplicate column name in mv") { + sql("drop table IF EXISTS maintable") + sql("create table maintable(name string, c_code int, price int) STORED AS carbondata") + sql("insert into table maintable values('abc',21,2000),('mno',24,3000)") + sql("drop materialized view if exists mv1") + val res1 = sql("select name,sum(c_code) from maintable group by name") + val res2 = sql("select name, name,sum(c_code),sum(c_code) from maintable group by name") + val res3 = sql("select c_code,price from maintable") + sql("create materialized view mv1 as select name,sum(c_code) from maintable group by name") + val df1 = sql("select name,sum(c_code) from maintable group by name") + TestUtil.verifyMVDataMap(df1.queryExecution.optimizedPlan, "mv1") + checkAnswer(res1, df1) + val df2 = sql("select name, name,sum(c_code),sum(c_code) from maintable group by name") + TestUtil.verifyMVDataMap(df2.queryExecution.optimizedPlan, "mv1") + checkAnswer(df2, res2) + sql("drop materialized view if exists mv2") + sql("create materialized view mv2 as select c_code,price from maintable") + val df3 = sql("select c_code,price from maintable") + TestUtil.verifyMVDataMap(df3.queryExecution.optimizedPlan, "mv2") + checkAnswer(res3, df3) + val df4 = sql("select c_code,price,price,c_code from maintable") + TestUtil.verifyMVDataMap(df4.queryExecution.optimizedPlan, "mv2") + checkAnswer(df4, Seq(Row(21,2000,2000,21), Row(24,3000,3000,24))) + sql("drop table IF EXISTS maintable") + } + + test("test duplicate column with different alias name") { + sql("drop table IF EXISTS maintable") + sql("create table maintable(name string, c_code int, price int) STORED AS carbondata") + sql("insert into table maintable values('abc',21,2000),('mno',24,3000)") + sql("drop materialized view if exists mv1") + intercept[MalformedMVCommandException] { + sql("create materialized view mv1 as select name,sum(c_code),sum(c_code) as a from maintable group by name") + }.getMessage.contains("Cannot create mv having duplicate column with different alias name: sum(CAST(maintable.`c_code` AS BIGINT)) AS `a`") Review comment: I am directly doing (column).sql to display columns, because in case of join on more tables, it is required to display with qualifier. In case of above scenario, it will be difficult to get only column name. I think it is better to keep like this. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services