[CARBONDATA-2112] Fixed bug for select operation on datamap with avg and a 
column name

Problem: When applying select operation(having a column name and an aggregate 
function) on a
table having a datamap, the data was coming out to be wrong as the group by 
expression
and aggregate expression were created incorrectly.

Solution: While creating the aggregate and group by expression, we were getting 
the child
column related to parent column name which was coming out to be wrong so added 
a new
check there to get the correct child column.

This closes #1910


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

Branch: refs/heads/branch-1.3
Commit: 91911af231583b9e2b210dd685770836b358bcd0
Parents: 44e70d0
Author: Geetika Gupta <[email protected]>
Authored: Fri Feb 2 14:02:38 2018 +0530
Committer: kunal642 <[email protected]>
Committed: Sat Feb 3 16:25:30 2018 +0530

----------------------------------------------------------------------
 .../metadata/schema/table/AggregationDataMapSchema.java  |  3 ++-
 .../testsuite/preaggregate/TestPreAggregateLoad.scala    | 11 +++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/carbondata/blob/91911af2/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/AggregationDataMapSchema.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/AggregationDataMapSchema.java
 
b/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/AggregationDataMapSchema.java
index e061812..2a16e1f 100644
--- 
a/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/AggregationDataMapSchema.java
+++ 
b/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/AggregationDataMapSchema.java
@@ -151,7 +151,8 @@ public class AggregationDataMapSchema extends DataMapSchema 
{
       List<ParentColumnTableRelation> parentColumnTableRelations =
           columnSchema.getParentColumnTableRelations();
       if (null != parentColumnTableRelations && 
parentColumnTableRelations.size() == 1
-          && 
parentColumnTableRelations.get(0).getColumnName().equals(columName)) {
+          && 
parentColumnTableRelations.get(0).getColumnName().equals(columName) &&
+          columnSchema.getColumnName().endsWith(columName)) {
         return columnSchema;
       }
     }

http://git-wip-us.apache.org/repos/asf/carbondata/blob/91911af2/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/preaggregate/TestPreAggregateLoad.scala
----------------------------------------------------------------------
diff --git 
a/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/preaggregate/TestPreAggregateLoad.scala
 
b/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/preaggregate/TestPreAggregateLoad.scala
index b6b7a17..da1ffb5 100644
--- 
a/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/preaggregate/TestPreAggregateLoad.scala
+++ 
b/integration/spark-common-test/src/test/scala/org/apache/carbondata/integration/spark/testsuite/preaggregate/TestPreAggregateLoad.scala
@@ -405,4 +405,15 @@ test("check load and select for avg double datatype") {
     sql("drop table if exists maintable")
   }
 
+  test("check load and select for avg int datatype and group by") {
+    sql("drop table if exists maintable ")
+    sql("CREATE TABLE maintable(id int, city string, age int) stored by 
'carbondata'")
+    sql(s"LOAD DATA LOCAL INPATH '$testData' into table maintable")
+    sql(s"LOAD DATA LOCAL INPATH '$testData' into table maintable")
+    sql(s"LOAD DATA LOCAL INPATH '$testData' into table maintable")
+    val rows = sql("select age,avg(age) from maintable group by age").collect()
+    sql("create datamap maintbl_douoble on table maintable using 
'preaggregate' as select avg(age) from maintable group by age")
+    checkAnswer(sql("select age,avg(age) from maintable group by age"), rows)
+  }
+
 }

Reply via email to