Repository: carbondata Updated Branches: refs/heads/master 0fa0a96c4 -> 697eee3de
[CARBONDATA-3115] Fix CodeGen error in preaggregate table and codegen display issue in oldstores Problem: 1. While querying a preaggregate table, codegen error is displayed. 2. In old stores, code is getting displayed while executing queries. This closes #2939 Project: http://git-wip-us.apache.org/repos/asf/carbondata/repo Commit: http://git-wip-us.apache.org/repos/asf/carbondata/commit/697eee3d Tree: http://git-wip-us.apache.org/repos/asf/carbondata/tree/697eee3d Diff: http://git-wip-us.apache.org/repos/asf/carbondata/diff/697eee3d Branch: refs/heads/master Commit: 697eee3de7eb1147fd75452d10acfe087a0566ba Parents: 0fa0a96 Author: Indhumathi27 <[email protected]> Authored: Wed Nov 21 17:23:25 2018 +0530 Committer: kumarvishal09 <[email protected]> Committed: Thu Nov 22 15:31:00 2018 +0530 ---------------------------------------------------------------------- .../preaggregate/TestPreAggCreateCommand.scala | 23 ++++++++++++++++++++ .../spark/sql/CarbonDictionaryDecoder.scala | 12 +++++----- 2 files changed, 29 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/carbondata/blob/697eee3d/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/preaggregate/TestPreAggCreateCommand.scala ---------------------------------------------------------------------- diff --git a/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/preaggregate/TestPreAggCreateCommand.scala b/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/preaggregate/TestPreAggCreateCommand.scala index 9fbdff7..7851bd1 100644 --- a/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/preaggregate/TestPreAggCreateCommand.scala +++ b/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/preaggregate/TestPreAggCreateCommand.scala @@ -438,6 +438,29 @@ class TestPreAggCreateCommand extends QueryTest with BeforeAndAfterAll { } } + test("test codegen issue with preaggregate") { + sql("DROP TABLE IF EXISTS PreAggMain") + sql("CREATE TABLE PreAggMain (id Int, date date, country string, phonetype string, " + + "serialname String,salary int ) STORED BY 'org.apache.carbondata.format' " + + "tblproperties('dictionary_include'='country')") + sql("create datamap PreAggSum on table PreAggMain using 'preaggregate' as " + + "select country,sum(salary) as sum from PreAggMain group by country") + sql("create datamap PreAggAvg on table PreAggMain using 'preaggregate' as " + + "select country,avg(salary) as avg from PreAggMain group by country") + sql("create datamap PreAggCount on table PreAggMain using 'preaggregate' as " + + "select country,count(salary) as count from PreAggMain group by country") + sql("create datamap PreAggMin on table PreAggMain using 'preaggregate' as " + + "select country,min(salary) as min from PreAggMain group by country") + sql("create datamap PreAggMax on table PreAggMain using 'preaggregate' as " + + "select country,max(salary) as max from PreAggMain group by country") + sql(s"LOAD DATA INPATH '$integrationPath/spark-common-test/src/test/resources/source.csv' " + + s"into table PreAggMain") + checkExistence(sql("select t1.country,sum(id) from PreAggMain t1 join (select " + + "country as newcountry,sum(salary) as sum from PreAggMain group by country)" + + "t2 on t1.country=t2.newcountry group by country"), true, "france") + sql("DROP TABLE IF EXISTS PreAggMain") + } + // TODO: Need to Fix ignore("test creation of multiple preaggregate of same name concurrently") { sql("DROP TABLE IF EXISTS tbl_concurr") http://git-wip-us.apache.org/repos/asf/carbondata/blob/697eee3d/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonDictionaryDecoder.scala ---------------------------------------------------------------------- diff --git a/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonDictionaryDecoder.scala b/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonDictionaryDecoder.scala index 95ab29d..3b20c2f 100644 --- a/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonDictionaryDecoder.scala +++ b/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonDictionaryDecoder.scala @@ -248,34 +248,34 @@ case class CarbonDictionaryDecoder( |org.apache.spark.sql.DictTuple $value = $decodeDecimal($dictRef, ${ev.value}); """.stripMargin ExprCode(code, s"$value.getIsNull()", - s"(org.apache.spark.sql.types.Decimal)$value.getValue()") + s"((org.apache.spark.sql.types.Decimal)$value.getValue())") } else { getDictionaryColumnIds(index)._3.getDataType match { case CarbonDataTypes.INT => code += s""" |org.apache.spark.sql.DictTuple $value = $decodeInt($dictRef, ${ ev.value }); """.stripMargin - ExprCode(code, s"$value.getIsNull()", s"(Integer)$value.getValue()") + ExprCode(code, s"$value.getIsNull()", s"((Integer)$value.getValue())") case CarbonDataTypes.SHORT => code += s""" |org.apache.spark.sql.DictTuple $value = $decodeShort($dictRef, ${ ev.value }); """.stripMargin - ExprCode(code, s"$value.getIsNull()", s"(Short)$value.getValue()") + ExprCode(code, s"$value.getIsNull()", s"((Short)$value.getValue())") case CarbonDataTypes.DOUBLE => code += s""" |org.apache.spark.sql.DictTuple $value = $decodeDouble($dictRef, ${ ev.value }); """.stripMargin - ExprCode(code, s"$value.getIsNull()", s"(Double)$value.getValue()") + ExprCode(code, s"$value.getIsNull()", s"((Double)$value.getValue())") case CarbonDataTypes.LONG => code += s""" |org.apache.spark.sql.DictTuple $value = $decodeLong($dictRef, ${ ev.value }); """.stripMargin - ExprCode(code, s"$value.getIsNull()", s"(Long)$value.getValue()") + ExprCode(code, s"$value.getIsNull()", s"((Long)$value.getValue())") case _ => code += s""" |org.apache.spark.sql.DictTuple $value = $decodeStr($dictRef, ${ev.value}); """.stripMargin - ExprCode(code, s"$value.getIsNull()", s"(UTF8String)$value.getValue()") + ExprCode(code, s"$value.getIsNull()", s"((UTF8String)$value.getValue())") } }
