From 492b60edbf8502c9f62f3f968926fa75f77504ed Mon Sep 17 00:00:00 2001 From: Indhumathi27 Date: Tue, 3 Jul 2018 22:31:40 +0530 Subject: [PATCH] Code Generator Error is thrown when Select filter contains more than one count of distinct of ComplexColumn with group by Clause --- .../complexType/TestComplexDataType.scala | 20 +++++++++++++++++++ .../sql/optimizer/CarbonLateDecodeRule.scala | 7 ++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/complexType/TestComplexDataType.scala b/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/complexType/TestComplexDataType.scala index 524289cc93f..ba0dc660b06 100644 --- a/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/complexType/TestComplexDataType.scala +++ b/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/complexType/TestComplexDataType.scala @@ -636,4 +636,24 @@ class TestComplexDataType extends QueryTest with BeforeAndAfterAll { sql("select b.c[0],a[0][0] from test").show(false) } + test("test structofarray with count(distinct)") { + sql("DROP TABLE IF EXISTS test") + CarbonProperties.getInstance() + .addProperty(CarbonCommonConstants.CARBON_TIMESTAMP_FORMAT, "yyyy/MM/dd") + sql( + "create table test(cus_id string, struct_of_array struct,sal:array,state:array,date1:array>) stored by " + + "'carbondata'") + sql("insert into test values('cus_01','1$2017/01/01$1:2$2.0:3.0$ab:ac$2018/01/01')") + sql("select *from test").show(false) + sql( + "select struct_of_array.state[0],count(distinct struct_of_array.id) as count_int,count" + + "(distinct struct_of_array.state[0]) as count_string from test group by struct_of_array" + + ".state[0]") + .show(false) + CarbonProperties.getInstance() + .addProperty(CarbonCommonConstants.CARBON_TIMESTAMP_FORMAT, + CarbonCommonConstants.CARBON_TIMESTAMP_DEFAULT_FORMAT) + } + } diff --git a/integration/spark2/src/main/scala/org/apache/spark/sql/optimizer/CarbonLateDecodeRule.scala b/integration/spark2/src/main/scala/org/apache/spark/sql/optimizer/CarbonLateDecodeRule.scala index 7ed17055fe5..68e7f07f5ee 100644 --- a/integration/spark2/src/main/scala/org/apache/spark/sql/optimizer/CarbonLateDecodeRule.scala +++ b/integration/spark2/src/main/scala/org/apache/spark/sql/optimizer/CarbonLateDecodeRule.scala @@ -90,7 +90,12 @@ class CarbonLateDecodeRule extends Rule[LogicalPlan] with PredicateHelper { LOGGER.info("skip CarbonOptimizer for scalar/predicate sub query") return false } - true + if(relations.exists(_.dictionaryMap.dictionaryMap.exists(_._2))) { + true + } else { + false + } + } else { LOGGER.info("skip CarbonOptimizer") false