From 2f9eeb9d40e653119372a6d3b38106035f4fece9 Mon Sep 17 00:00:00 2001 From: gatorsmile Date: Fri, 5 Feb 2016 17:48:20 -0800 Subject: [PATCH 01/11] fixing grouping sets --- .../spark/sql/catalyst/analysis/Analyzer.scala | 2 ++ .../org/apache/spark/sql/SQLQuerySuite.scala | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala index b59eb12419c45..ab3142cfd8159 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala @@ -215,6 +215,8 @@ class Analyzer( GroupingSets(bitmasks(c), groupByExprs, child, aggregateExpressions) case Aggregate(Seq(r @ Rollup(groupByExprs)), aggregateExpressions, child) => GroupingSets(bitmasks(r), groupByExprs, child, aggregateExpressions) + // Ensure all the expressions have been resolved. + case g: GroupingSets if g.expressions.exists(!_.resolved) => g case x: GroupingSets => val gid = AttributeReference(VirtualColumn.groupingIdName, IntegerType, false)() diff --git a/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala index 8ef7b61314a56..55ddae43a9825 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala @@ -2040,6 +2040,22 @@ class SQLQuerySuite extends QueryTest with SharedSQLContext { ) } + test("grouping sets") { + checkAnswer( + sql("select course, sum(earnings) as sum from courseSales group by course, earnings" + + " grouping sets((), (course), (course, earnings))" + + " order by course, sum"), + Row(null, 113000.0) :: + Row("Java", 20000.0) :: + Row("Java", 30000.0) :: + Row("Java", 50000.0) :: + Row("dotNET", 5000.0) :: + Row("dotNET", 10000.0) :: + Row("dotNET", 48000.0) :: + Row("dotNET", 63000.0) :: Nil + ) + } + test("cube") { checkAnswer( sql("select course, year, sum(earnings) from courseSales group by cube(course, year)"), From 18f413057b57efb3976dd04a0dfb723cdf59faea Mon Sep 17 00:00:00 2001 From: gatorsmile Date: Sat, 6 Feb 2016 00:47:26 -0800 Subject: [PATCH 02/11] fix the issue when users manually specify grouping__id in the query. --- .../sql/catalyst/analysis/Analyzer.scala | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala index ab3142cfd8159..8ccaf28933a35 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala @@ -216,15 +216,30 @@ class Analyzer( case Aggregate(Seq(r @ Rollup(groupByExprs)), aggregateExpressions, child) => GroupingSets(bitmasks(r), groupByExprs, child, aggregateExpressions) // Ensure all the expressions have been resolved. - case g: GroupingSets if g.expressions.exists(!_.resolved) => g - case x: GroupingSets => + case g: GroupingSets if g.expressions.exists(!_.resolved) => val gid = AttributeReference(VirtualColumn.groupingIdName, IntegerType, false)() - + // If users manually specify grouping__id in the aggregation expression, resolve it. + val aggExprs = g.aggregations.map(_.transform { + case u: UnresolvedAttribute if resolver(u.name, VirtualColumn.groupingIdName) => gid + }.asInstanceOf[NamedExpression]) + g.copy(aggregations = aggExprs, groupByExprs = g.groupByExprs :+ gid) + case x: GroupingSets => + // Find the grouping ID AttributeReference that has been added above + val (groupingID, groupByExprsWithoutGroupingID) = x.groupByExprs.partition { + case u: AttributeReference => resolver(u.name, VirtualColumn.groupingIdName) + case _ => false + } + // If found, use it; otherwise, create a new one. + val gid = if (groupingID.nonEmpty) { + groupingID.head.asInstanceOf[AttributeReference] + } else { + AttributeReference(VirtualColumn.groupingIdName, IntegerType, false)() + } // Expand works by setting grouping expressions to null as determined by the bitmasks. To // prevent these null values from being used in an aggregate instead of the original value // we need to create new aliases for all group by expressions that will only be used for // the intended purpose. - val groupByAliases: Seq[Alias] = x.groupByExprs.map { + val groupByAliases: Seq[Alias] = groupByExprsWithoutGroupingID.map { case e: NamedExpression => Alias(e, e.name)() case other => Alias(other, other.toString)() } @@ -256,7 +271,7 @@ class Analyzer( val groupByAttributes = groupByAliases.map(attributeMap(_)) Aggregate( - groupByAttributes :+ VirtualColumn.groupingIdAttribute, + groupByAttributes :+ gid, aggregations, Expand(x.bitmasks, groupByAttributes, gid, child)) } From 114e0eba1fbdf28e359f15bedacb7defa1998be6 Mon Sep 17 00:00:00 2001 From: gatorsmile Date: Sun, 7 Feb 2016 19:44:25 -0800 Subject: [PATCH 03/11] fixed a bug. --- .../sql/catalyst/analysis/Analyzer.scala | 7 ++++++- .../org/apache/spark/sql/SQLQuerySuite.scala | 20 ++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala index 8ccaf28933a35..050e89f2eab62 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala @@ -222,7 +222,12 @@ class Analyzer( val aggExprs = g.aggregations.map(_.transform { case u: UnresolvedAttribute if resolver(u.name, VirtualColumn.groupingIdName) => gid }.asInstanceOf[NamedExpression]) - g.copy(aggregations = aggExprs, groupByExprs = g.groupByExprs :+ gid) + if (aggExprs != g.aggregations) { + g.copy(aggregations = aggExprs, groupByExprs = g.groupByExprs :+ gid) + } + else { + g + } case x: GroupingSets => // Find the grouping ID AttributeReference that has been added above val (groupingID, groupByExprsWithoutGroupingID) = x.groupByExprs.partition { diff --git a/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala index 55ddae43a9825..d4d603a087951 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala @@ -2042,9 +2042,9 @@ class SQLQuerySuite extends QueryTest with SharedSQLContext { test("grouping sets") { checkAnswer( - sql("select course, sum(earnings) as sum from courseSales group by course, earnings" + - " grouping sets((), (course), (course, earnings))" + - " order by course, sum"), + sql("select course, sum(earnings) as sum from courseSales group by course, earnings " + + "grouping sets((), (course), (course, earnings)) " + + "order by course, sum"), Row(null, 113000.0) :: Row("Java", 20000.0) :: Row("Java", 30000.0) :: @@ -2054,6 +2054,20 @@ class SQLQuerySuite extends QueryTest with SharedSQLContext { Row("dotNET", 48000.0) :: Row("dotNET", 63000.0) :: Nil ) + + checkAnswer( + sql("select course, sum(earnings) as sum, grouping__id from courseSales " + + "group by course, earnings grouping sets((), (course), (course, earnings)) " + + "order by course, sum"), + Row(null, 113000.0, 0) :: + Row("Java", 20000.0, 3) :: + Row("Java", 30000.0, 3) :: + Row("Java", 50000.0, 1) :: + Row("dotNET", 5000.0, 3) :: + Row("dotNET", 10000.0, 3) :: + Row("dotNET", 48000.0, 3) :: + Row("dotNET", 63000.0, 1) :: Nil + ) } test("cube") { From 524dfa072df691c4c218758b14d01817722577b5 Mon Sep 17 00:00:00 2001 From: gatorsmile Date: Wed, 10 Feb 2016 22:38:08 -0800 Subject: [PATCH 04/11] fixed the duplicate test case name. --- .../src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala index d4d603a087951..243dff3eeb4e7 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala @@ -2040,7 +2040,7 @@ class SQLQuerySuite extends QueryTest with SharedSQLContext { ) } - test("grouping sets") { + test("grouping sets when aggregate functions containing groupBy columns") { checkAnswer( sql("select course, sum(earnings) as sum from courseSales group by course, earnings " + "grouping sets((), (course), (course, earnings)) " + From e62c3d0f908eb219798c958a6af731ce2750fbb8 Mon Sep 17 00:00:00 2001 From: gatorsmile Date: Thu, 11 Feb 2016 07:00:06 -0800 Subject: [PATCH 05/11] test case fix. --- .../scala/org/apache/spark/sql/SQLQuerySuite.scala | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala index 71efb0dd7a9c1..b8f7d719413df 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala @@ -2059,13 +2059,13 @@ class SQLQuerySuite extends QueryTest with SharedSQLContext { sql("select course, sum(earnings) as sum, grouping__id from courseSales " + "group by course, earnings grouping sets((), (course), (course, earnings)) " + "order by course, sum"), - Row(null, 113000.0, 0) :: - Row("Java", 20000.0, 3) :: - Row("Java", 30000.0, 3) :: + Row(null, 113000.0, 3) :: + Row("Java", 20000.0, 0) :: + Row("Java", 30000.0, 0) :: Row("Java", 50000.0, 1) :: - Row("dotNET", 5000.0, 3) :: - Row("dotNET", 10000.0, 3) :: - Row("dotNET", 48000.0, 3) :: + Row("dotNET", 5000.0, 0) :: + Row("dotNET", 10000.0, 0) :: + Row("dotNET", 48000.0, 0) :: Row("dotNET", 63000.0, 1) :: Nil ) } From 79c11de8954e137e134d3a8645b6936cd625f38e Mon Sep 17 00:00:00 2001 From: gatorsmile Date: Thu, 11 Feb 2016 20:37:41 -0800 Subject: [PATCH 06/11] address comments. --- .../scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala index d730e1c4ab41e..e97b8305401ae 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala @@ -229,7 +229,7 @@ class Analyzer( else { g } - case x: GroupingSets => + case x: GroupingSets if x.expressions.forall(_.resolved) => // Find the grouping ID AttributeReference that has been added above val (groupingID, groupByExprsWithoutGroupingID) = x.groupByExprs.partition { case u: AttributeReference => resolver(u.name, VirtualColumn.groupingIdName) From d12c07baa63298bb84406824da0323bf8c9e7def Mon Sep 17 00:00:00 2001 From: gatorsmile Date: Fri, 12 Feb 2016 12:08:12 -0800 Subject: [PATCH 07/11] address comments. --- .../sql/catalyst/analysis/Analyzer.scala | 30 ++++--------------- .../org/apache/spark/sql/SQLQuerySuite.scala | 14 +++++++++ 2 files changed, 19 insertions(+), 25 deletions(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala index e97b8305401ae..66ff3f91b0940 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala @@ -217,35 +217,15 @@ class Analyzer( case Aggregate(Seq(r @ Rollup(groupByExprs)), aggregateExpressions, child) => GroupingSets(bitmasks(r), groupByExprs, child, aggregateExpressions) // Ensure all the expressions have been resolved. - case g: GroupingSets if g.expressions.exists(!_.resolved) => + case g: GroupingSets if g.expressions.exists(!_.resolved) => g + case x: GroupingSets => val gid = AttributeReference(VirtualColumn.groupingIdName, IntegerType, false)() - // If users manually specify grouping__id in the aggregation expression, resolve it. - val aggExprs = g.aggregations.map(_.transform { - case u: UnresolvedAttribute if resolver(u.name, VirtualColumn.groupingIdName) => gid - }.asInstanceOf[NamedExpression]) - if (aggExprs != g.aggregations) { - g.copy(aggregations = aggExprs, groupByExprs = g.groupByExprs :+ gid) - } - else { - g - } - case x: GroupingSets if x.expressions.forall(_.resolved) => - // Find the grouping ID AttributeReference that has been added above - val (groupingID, groupByExprsWithoutGroupingID) = x.groupByExprs.partition { - case u: AttributeReference => resolver(u.name, VirtualColumn.groupingIdName) - case _ => false - } - // If found, use it; otherwise, create a new one. - val gid = if (groupingID.nonEmpty) { - groupingID.head.asInstanceOf[AttributeReference] - } else { - AttributeReference(VirtualColumn.groupingIdName, IntegerType, false)() - } + // Expand works by setting grouping expressions to null as determined by the bitmasks. To // prevent these null values from being used in an aggregate instead of the original value // we need to create new aliases for all group by expressions that will only be used for // the intended purpose. - val groupByAliases: Seq[Alias] = groupByExprsWithoutGroupingID.map { + val groupByAliases: Seq[Alias] = x.groupByExprs.map { case e: NamedExpression => Alias(e, e.name)() case other => Alias(other, other.toString)() } @@ -302,7 +282,7 @@ class Analyzer( val groupByAttributes = groupByAliases.map(attributeMap(_)) Aggregate( - groupByAttributes :+ gid, + groupByAttributes :+ VirtualColumn.groupingIdAttribute, aggregations, Expand(x.bitmasks, groupByAttributes, gid, child)) } diff --git a/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala index b8f7d719413df..8084175b51887 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala @@ -2055,6 +2055,20 @@ class SQLQuerySuite extends QueryTest with SharedSQLContext { Row("dotNET", 63000.0) :: Nil ) + checkAnswer( + sql("select course, sum(earnings) as sum, grouping_id(course, earnings) from courseSales " + + "group by course, earnings grouping sets((), (course), (course, earnings)) " + + "order by course, sum"), + Row(null, 113000.0, 3) :: + Row("Java", 20000.0, 0) :: + Row("Java", 30000.0, 0) :: + Row("Java", 50000.0, 1) :: + Row("dotNET", 5000.0, 0) :: + Row("dotNET", 10000.0, 0) :: + Row("dotNET", 48000.0, 0) :: + Row("dotNET", 63000.0, 1) :: Nil + ) + checkAnswer( sql("select course, sum(earnings) as sum, grouping__id from courseSales " + "group by course, earnings grouping sets((), (course), (course, earnings)) " + From ed518f946f83ff4d769ca3c095bfa25d406e4a3f Mon Sep 17 00:00:00 2001 From: gatorsmile Date: Fri, 12 Feb 2016 12:09:18 -0800 Subject: [PATCH 08/11] removed the test case using grouping__id --- .../scala/org/apache/spark/sql/SQLQuerySuite.scala | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala index 8084175b51887..78bcdffe3127a 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala @@ -2068,20 +2068,6 @@ class SQLQuerySuite extends QueryTest with SharedSQLContext { Row("dotNET", 48000.0, 0) :: Row("dotNET", 63000.0, 1) :: Nil ) - - checkAnswer( - sql("select course, sum(earnings) as sum, grouping__id from courseSales " + - "group by course, earnings grouping sets((), (course), (course, earnings)) " + - "order by course, sum"), - Row(null, 113000.0, 3) :: - Row("Java", 20000.0, 0) :: - Row("Java", 30000.0, 0) :: - Row("Java", 50000.0, 1) :: - Row("dotNET", 5000.0, 0) :: - Row("dotNET", 10000.0, 0) :: - Row("dotNET", 48000.0, 0) :: - Row("dotNET", 63000.0, 1) :: Nil - ) } test("cube") { From 763137103ea5470a5fa9c14d02b4b0c9d1a32ed1 Mon Sep 17 00:00:00 2001 From: gatorsmile Date: Fri, 12 Feb 2016 22:06:52 -0800 Subject: [PATCH 09/11] removed GROUPING__ID from the test cases --- ...CUBE #1-0-c6fe12ddd9e364e4418439a8fddbf1e4 | 6 +++++ ...CUBE #2-0-7ac45e0d0832acb00c7c5ee92b8d6cd0 | 10 ++++++++ ...pingSet-0-e44c1897e8971429a72f540962ad530f | 10 ++++++++ ...ollup #1-0-518e8dd504680c38b3b01091b9b575d | 6 +++++ ...llup #2-0-280edc8b2695bc9785ac5f0b08e111f8 | 10 ++++++++ ...llup #3-0-da706fe0f77c3608f621214e6db0d527 | 10 ++++++++ .../sql/hive/execution/HiveQuerySuite.scala | 24 ++++++++----------- 7 files changed, 62 insertions(+), 14 deletions(-) create mode 100644 sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #1-0-c6fe12ddd9e364e4418439a8fddbf1e4 create mode 100644 sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #2-0-7ac45e0d0832acb00c7c5ee92b8d6cd0 create mode 100644 sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for GroupingSet-0-e44c1897e8971429a72f540962ad530f create mode 100644 sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #1-0-518e8dd504680c38b3b01091b9b575d create mode 100644 sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #2-0-280edc8b2695bc9785ac5f0b08e111f8 create mode 100644 sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #3-0-da706fe0f77c3608f621214e6db0d527 diff --git a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #1-0-c6fe12ddd9e364e4418439a8fddbf1e4 b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #1-0-c6fe12ddd9e364e4418439a8fddbf1e4 new file mode 100644 index 0000000000000..fc98dca67c95f --- /dev/null +++ b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #1-0-c6fe12ddd9e364e4418439a8fddbf1e4 @@ -0,0 +1,6 @@ +500 NULL +91 0 +84 1 +105 2 +113 3 +107 4 diff --git a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #2-0-7ac45e0d0832acb00c7c5ee92b8d6cd0 b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #2-0-7ac45e0d0832acb00c7c5ee92b8d6cd0 new file mode 100644 index 0000000000000..07135e5f561a1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #2-0-7ac45e0d0832acb00c7c5ee92b8d6cd0 @@ -0,0 +1,10 @@ +1 NULL -3 +1 NULL -1 +1 NULL 3 +1 NULL 4 +1 NULL 5 +1 NULL 6 +1 NULL 12 +1 NULL 14 +1 NULL 15 +1 NULL 22 diff --git a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for GroupingSet-0-e44c1897e8971429a72f540962ad530f b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for GroupingSet-0-e44c1897e8971429a72f540962ad530f new file mode 100644 index 0000000000000..07135e5f561a1 --- /dev/null +++ b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for GroupingSet-0-e44c1897e8971429a72f540962ad530f @@ -0,0 +1,10 @@ +1 NULL -3 +1 NULL -1 +1 NULL 3 +1 NULL 4 +1 NULL 5 +1 NULL 6 +1 NULL 12 +1 NULL 14 +1 NULL 15 +1 NULL 22 diff --git a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #1-0-518e8dd504680c38b3b01091b9b575d b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #1-0-518e8dd504680c38b3b01091b9b575d new file mode 100644 index 0000000000000..fc98dca67c95f --- /dev/null +++ b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #1-0-518e8dd504680c38b3b01091b9b575d @@ -0,0 +1,6 @@ +500 NULL +91 0 +84 1 +105 2 +113 3 +107 4 diff --git a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #2-0-280edc8b2695bc9785ac5f0b08e111f8 b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #2-0-280edc8b2695bc9785ac5f0b08e111f8 new file mode 100644 index 0000000000000..579a565416cfb --- /dev/null +++ b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #2-0-280edc8b2695bc9785ac5f0b08e111f8 @@ -0,0 +1,10 @@ +1 0 5 +1 0 15 +1 0 25 +1 0 60 +1 0 75 +1 0 80 +1 0 100 +1 0 140 +1 0 145 +1 0 150 diff --git a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #3-0-da706fe0f77c3608f621214e6db0d527 b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #3-0-da706fe0f77c3608f621214e6db0d527 new file mode 100644 index 0000000000000..579a565416cfb --- /dev/null +++ b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #3-0-da706fe0f77c3608f621214e6db0d527 @@ -0,0 +1,10 @@ +1 0 5 +1 0 15 +1 0 25 +1 0 60 +1 0 75 +1 0 80 +1 0 100 +1 0 140 +1 0 145 +1 0 150 diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala index 1337a25eb26a3..60100489df387 100644 --- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala @@ -125,7 +125,7 @@ class HiveQuerySuite extends HiveComparisonTest with BeforeAndAfter { createQueryTest("SPARK-8976 Wrong Result for Rollup #1", """ - SELECT count(*) AS cnt, key % 5,GROUPING__ID FROM src group by key%5 WITH ROLLUP + SELECT count(*) AS cnt, key % 5 FROM src group by key%5 WITH ROLLUP """.stripMargin) createQueryTest("SPARK-8976 Wrong Result for Rollup #2", @@ -133,10 +133,9 @@ class HiveQuerySuite extends HiveComparisonTest with BeforeAndAfter { SELECT count(*) AS cnt, key % 5 as k1, - key-5 as k2, - GROUPING__ID as k3 + key-5 as k2 FROM src group by key%5, key-5 - WITH ROLLUP ORDER BY cnt, k1, k2, k3 LIMIT 10 + WITH ROLLUP ORDER BY cnt, k1, k2 LIMIT 10 """.stripMargin) createQueryTest("SPARK-8976 Wrong Result for Rollup #3", @@ -144,15 +143,14 @@ class HiveQuerySuite extends HiveComparisonTest with BeforeAndAfter { SELECT count(*) AS cnt, key % 5 as k1, - key-5 as k2, - GROUPING__ID as k3 + key-5 as k2 FROM (SELECT key, key%2, key - 5 FROM src) t group by key%5, key-5 - WITH ROLLUP ORDER BY cnt, k1, k2, k3 LIMIT 10 + WITH ROLLUP ORDER BY cnt, k1, k2 LIMIT 10 """.stripMargin) createQueryTest("SPARK-8976 Wrong Result for CUBE #1", """ - SELECT count(*) AS cnt, key % 5,GROUPING__ID FROM src group by key%5 WITH CUBE + SELECT count(*) AS cnt, key % 5 FROM src group by key%5 WITH CUBE """.stripMargin) createQueryTest("SPARK-8976 Wrong Result for CUBE #2", @@ -160,10 +158,9 @@ class HiveQuerySuite extends HiveComparisonTest with BeforeAndAfter { SELECT count(*) AS cnt, key % 5 as k1, - key-5 as k2, - GROUPING__ID as k3 + key-5 as k2 FROM (SELECT key, key%2, key - 5 FROM src) t group by key%5, key-5 - WITH CUBE ORDER BY cnt, k1, k2, k3 LIMIT 10 + WITH CUBE ORDER BY cnt, k1, k2 LIMIT 10 """.stripMargin) createQueryTest("SPARK-8976 Wrong Result for GroupingSet", @@ -171,10 +168,9 @@ class HiveQuerySuite extends HiveComparisonTest with BeforeAndAfter { SELECT count(*) AS cnt, key % 5 as k1, - key-5 as k2, - GROUPING__ID as k3 + key-5 as k2 FROM (SELECT key, key%2, key - 5 FROM src) t group by key%5, key-5 - GROUPING SETS (key%5, key-5) ORDER BY cnt, k1, k2, k3 LIMIT 10 + GROUPING SETS (key%5, key-5) ORDER BY cnt, k1, k2 LIMIT 10 """.stripMargin) createQueryTest("insert table with generator with column name", From b1623be3171f4e714109838cb981bca3086cae3f Mon Sep 17 00:00:00 2001 From: gatorsmile Date: Sun, 14 Feb 2016 08:55:46 -0800 Subject: [PATCH 10/11] address comments. --- .../sql/catalyst/analysis/Analyzer.scala | 12 +- .../org/apache/spark/sql/SQLQuerySuite.scala | 4 + .../sql/hive/execution/HiveQuerySuite.scala | 50 -------- .../sql/hive/execution/SQLQuerySuite.scala | 110 ++++++++++++++++++ 4 files changed, 124 insertions(+), 52 deletions(-) diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala index 66ff3f91b0940..d02156c97ab10 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/Analyzer.scala @@ -210,15 +210,23 @@ class Analyzer( Seq.tabulate(1 << c.groupByExprs.length)(i => i) } + private def hasGroupingId(expr: Seq[Expression]): Boolean = { + expr.exists(_.collectFirst { + case u: UnresolvedAttribute if resolver(u.name, VirtualColumn.groupingIdName) => u + }.isDefined) + } + def apply(plan: LogicalPlan): LogicalPlan = plan resolveOperators { case a if !a.childrenResolved => a // be sure all of the children are resolved. case Aggregate(Seq(c @ Cube(groupByExprs)), aggregateExpressions, child) => GroupingSets(bitmasks(c), groupByExprs, child, aggregateExpressions) case Aggregate(Seq(r @ Rollup(groupByExprs)), aggregateExpressions, child) => GroupingSets(bitmasks(r), groupByExprs, child, aggregateExpressions) + case g: GroupingSets if g.expressions.exists(!_.resolved) && hasGroupingId(g.expressions) => + failAnalysis( + s"${VirtualColumn.groupingIdName} is deprecated; use grouping_id() instead") // Ensure all the expressions have been resolved. - case g: GroupingSets if g.expressions.exists(!_.resolved) => g - case x: GroupingSets => + case x: GroupingSets if x.expressions.forall(_.resolved) => val gid = AttributeReference(VirtualColumn.groupingIdName, IntegerType, false)() // Expand works by setting grouping expressions to null as determined by the bitmasks. To diff --git a/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala index 78bcdffe3127a..b3e179755a19b 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala @@ -2133,6 +2133,10 @@ class SQLQuerySuite extends QueryTest with SharedSQLContext { sql("select course, year, grouping_id(course, year) from courseSales group by course, year") } assert(error.getMessage contains "grouping_id() can only be used with GroupingSets/Cube/Rollup") + error = intercept[AnalysisException] { + sql("select course, year, grouping__id from courseSales group by cube(course, year)") + } + assert(error.getMessage contains "grouping__id is deprecated; use grouping_id() instead") } test("SPARK-13056: Null in map value causes NPE") { diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala index 60100489df387..3208ebc9ffb2e 100644 --- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala @@ -123,56 +123,6 @@ class HiveQuerySuite extends HiveComparisonTest with BeforeAndAfter { assertBroadcastNestedLoopJoin(spark_10484_4) } - createQueryTest("SPARK-8976 Wrong Result for Rollup #1", - """ - SELECT count(*) AS cnt, key % 5 FROM src group by key%5 WITH ROLLUP - """.stripMargin) - - createQueryTest("SPARK-8976 Wrong Result for Rollup #2", - """ - SELECT - count(*) AS cnt, - key % 5 as k1, - key-5 as k2 - FROM src group by key%5, key-5 - WITH ROLLUP ORDER BY cnt, k1, k2 LIMIT 10 - """.stripMargin) - - createQueryTest("SPARK-8976 Wrong Result for Rollup #3", - """ - SELECT - count(*) AS cnt, - key % 5 as k1, - key-5 as k2 - FROM (SELECT key, key%2, key - 5 FROM src) t group by key%5, key-5 - WITH ROLLUP ORDER BY cnt, k1, k2 LIMIT 10 - """.stripMargin) - - createQueryTest("SPARK-8976 Wrong Result for CUBE #1", - """ - SELECT count(*) AS cnt, key % 5 FROM src group by key%5 WITH CUBE - """.stripMargin) - - createQueryTest("SPARK-8976 Wrong Result for CUBE #2", - """ - SELECT - count(*) AS cnt, - key % 5 as k1, - key-5 as k2 - FROM (SELECT key, key%2, key - 5 FROM src) t group by key%5, key-5 - WITH CUBE ORDER BY cnt, k1, k2 LIMIT 10 - """.stripMargin) - - createQueryTest("SPARK-8976 Wrong Result for GroupingSet", - """ - SELECT - count(*) AS cnt, - key % 5 as k1, - key-5 as k2 - FROM (SELECT key, key%2, key - 5 FROM src) t group by key%5, key-5 - GROUPING SETS (key%5, key-5) ORDER BY cnt, k1, k2 LIMIT 10 - """.stripMargin) - createQueryTest("insert table with generator with column name", """ | CREATE TABLE gen_tmp (key Int); diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/SQLQuerySuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/SQLQuerySuite.scala index 6048b8f5a3998..c98668fd76807 100644 --- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/SQLQuerySuite.scala +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/SQLQuerySuite.scala @@ -1536,6 +1536,116 @@ class SQLQuerySuite extends QueryTest with SQLTestUtils with TestHiveSingleton { } } + test("SPARK-8976 Wrong Result for Rollup #1") { + checkAnswer(sql( + "SELECT count(*) AS cnt, key % 5, grouping_id() FROM src GROUP BY key%5 WITH ROLLUP"), + Seq( + (113, 3, 0), + (91, 0, 0), + (500, null, 1), + (84, 1, 0), + (105, 2, 0), + (107, 4, 0) + ).map(i => Row(i._1, i._2, i._3))) + } + + test("SPARK-8976 Wrong Result for Rollup #2") { + checkAnswer(sql( + """ + |SELECT count(*) AS cnt, key % 5 AS k1, key-5 AS k2, grouping_id() AS k3 + |FROM src GROUP BY key%5, key-5 + |WITH ROLLUP ORDER BY cnt, k1, k2, k3 LIMIT 10 + """.stripMargin), + Seq( + (1, 0, 5, 0), + (1, 0, 15, 0), + (1, 0, 25, 0), + (1, 0, 60, 0), + (1, 0, 75, 0), + (1, 0, 80, 0), + (1, 0, 100, 0), + (1, 0, 140, 0), + (1, 0, 145, 0), + (1, 0, 150, 0) + ).map(i => Row(i._1, i._2, i._3, i._4))) + } + + test("SPARK-8976 Wrong Result for Rollup #3") { + checkAnswer(sql( + """ + |SELECT count(*) AS cnt, key % 5 AS k1, key-5 AS k2, grouping_id() AS k3 + |FROM (SELECT key, key%2, key - 5 FROM src) t GROUP BY key%5, key-5 + |WITH ROLLUP ORDER BY cnt, k1, k2, k3 LIMIT 10 + """.stripMargin), + Seq( + (1, 0, 5, 0), + (1, 0, 15, 0), + (1, 0, 25, 0), + (1, 0, 60, 0), + (1, 0, 75, 0), + (1, 0, 80, 0), + (1, 0, 100, 0), + (1, 0, 140, 0), + (1, 0, 145, 0), + (1, 0, 150, 0) + ).map(i => Row(i._1, i._2, i._3, i._4))) + } + + test("SPARK-8976 Wrong Result for CUBE #1") { + checkAnswer(sql( + "SELECT count(*) AS cnt, key % 5, grouping_id() FROM src GROUP BY key%5 WITH CUBE"), + Seq( + (113, 3, 0), + (91, 0, 0), + (500, null, 1), + (84, 1, 0), + (105, 2, 0), + (107, 4, 0) + ).map(i => Row(i._1, i._2, i._3))) + } + + test("SPARK-8976 Wrong Result for CUBE #2") { + checkAnswer(sql( + """ + |SELECT count(*) AS cnt, key % 5 AS k1, key-5 AS k2, grouping_id() AS k3 + |FROM (SELECT key, key%2, key - 5 FROM src) t GROUP BY key%5, key-5 + |WITH CUBE ORDER BY cnt, k1, k2, k3 LIMIT 10 + """.stripMargin), + Seq( + (1, null, -3, 2), + (1, null, -1, 2), + (1, null, 3, 2), + (1, null, 4, 2), + (1, null, 5, 2), + (1, null, 6, 2), + (1, null, 12, 2), + (1, null, 14, 2), + (1, null, 15, 2), + (1, null, 22, 2) + ).map(i => Row(i._1, i._2, i._3, i._4))) + } + + test("SPARK-8976 Wrong Result for GroupingSet") { + checkAnswer(sql( + """ + |SELECT count(*) AS cnt, key % 5 AS k1, key-5 AS k2, grouping_id() AS k3 + |FROM (SELECT key, key%2, key - 5 FROM src) t GROUP BY key%5, key-5 + |GROUPING SETS (key%5, key-5) ORDER BY cnt, k1, k2, k3 LIMIT 10 + """.stripMargin), + Seq( + (1, null, -3, 2), + (1, null, -1, 2), + (1, null, 3, 2), + (1, null, 4, 2), + (1, null, 5, 2), + (1, null, 6, 2), + (1, null, 12, 2), + (1, null, 14, 2), + (1, null, 15, 2), + (1, null, 22, 2) + ).map(i => Row(i._1, i._2, i._3, i._4))) + } + test("SPARK-10562: partition by column with mixed case name") { withTable("tbl10562") { val df = Seq(2012 -> "a").toDF("Year", "val") From 1ca66acc4d5cd962124942adcb2411d5c8566081 Mon Sep 17 00:00:00 2001 From: gatorsmile Date: Sun, 14 Feb 2016 08:59:37 -0800 Subject: [PATCH 11/11] removed unnecessary golden result files. --- ...sult for CUBE #1-0-63b61fb3f0e74226001ad279be440864 | 6 ------ ...sult for CUBE #1-0-c6fe12ddd9e364e4418439a8fddbf1e4 | 6 ------ ...sult for CUBE #2-0-7a511f02a16f0af4f810b1666cfcd896 | 10 ---------- ...sult for CUBE #2-0-7ac45e0d0832acb00c7c5ee92b8d6cd0 | 10 ---------- ... for GroupingSet-0-8c14c24670a4b06c440346277ce9cf1c | 10 ---------- ... for GroupingSet-0-e44c1897e8971429a72f540962ad530f | 10 ---------- ...ult for Rollup #1-0-518e8dd504680c38b3b01091b9b575d | 6 ------ ...lt for Rollup #1-0-a78e3dbf242f240249e36b3d3fd0926a | 6 ------ ...lt for Rollup #2-0-280edc8b2695bc9785ac5f0b08e111f8 | 10 ---------- ...lt for Rollup #2-0-bf180c9d1a18f61b9d9f31bb0115cf89 | 10 ---------- ...lt for Rollup #3-0-9257085d123728730be96b6d9fbb84ce | 10 ---------- ...lt for Rollup #3-0-da706fe0f77c3608f621214e6db0d527 | 10 ---------- 12 files changed, 104 deletions(-) delete mode 100644 sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #1-0-63b61fb3f0e74226001ad279be440864 delete mode 100644 sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #1-0-c6fe12ddd9e364e4418439a8fddbf1e4 delete mode 100644 sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #2-0-7a511f02a16f0af4f810b1666cfcd896 delete mode 100644 sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #2-0-7ac45e0d0832acb00c7c5ee92b8d6cd0 delete mode 100644 sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for GroupingSet-0-8c14c24670a4b06c440346277ce9cf1c delete mode 100644 sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for GroupingSet-0-e44c1897e8971429a72f540962ad530f delete mode 100644 sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #1-0-518e8dd504680c38b3b01091b9b575d delete mode 100644 sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #1-0-a78e3dbf242f240249e36b3d3fd0926a delete mode 100644 sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #2-0-280edc8b2695bc9785ac5f0b08e111f8 delete mode 100644 sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #2-0-bf180c9d1a18f61b9d9f31bb0115cf89 delete mode 100644 sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #3-0-9257085d123728730be96b6d9fbb84ce delete mode 100644 sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #3-0-da706fe0f77c3608f621214e6db0d527 diff --git a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #1-0-63b61fb3f0e74226001ad279be440864 b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #1-0-63b61fb3f0e74226001ad279be440864 deleted file mode 100644 index c066aeead822e..0000000000000 --- a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #1-0-63b61fb3f0e74226001ad279be440864 +++ /dev/null @@ -1,6 +0,0 @@ -500 NULL 1 -91 0 0 -84 1 0 -105 2 0 -113 3 0 -107 4 0 diff --git a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #1-0-c6fe12ddd9e364e4418439a8fddbf1e4 b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #1-0-c6fe12ddd9e364e4418439a8fddbf1e4 deleted file mode 100644 index fc98dca67c95f..0000000000000 --- a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #1-0-c6fe12ddd9e364e4418439a8fddbf1e4 +++ /dev/null @@ -1,6 +0,0 @@ -500 NULL -91 0 -84 1 -105 2 -113 3 -107 4 diff --git a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #2-0-7a511f02a16f0af4f810b1666cfcd896 b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #2-0-7a511f02a16f0af4f810b1666cfcd896 deleted file mode 100644 index c7cb747c0a659..0000000000000 --- a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #2-0-7a511f02a16f0af4f810b1666cfcd896 +++ /dev/null @@ -1,10 +0,0 @@ -1 NULL -3 2 -1 NULL -1 2 -1 NULL 3 2 -1 NULL 4 2 -1 NULL 5 2 -1 NULL 6 2 -1 NULL 12 2 -1 NULL 14 2 -1 NULL 15 2 -1 NULL 22 2 diff --git a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #2-0-7ac45e0d0832acb00c7c5ee92b8d6cd0 b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #2-0-7ac45e0d0832acb00c7c5ee92b8d6cd0 deleted file mode 100644 index 07135e5f561a1..0000000000000 --- a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for CUBE #2-0-7ac45e0d0832acb00c7c5ee92b8d6cd0 +++ /dev/null @@ -1,10 +0,0 @@ -1 NULL -3 -1 NULL -1 -1 NULL 3 -1 NULL 4 -1 NULL 5 -1 NULL 6 -1 NULL 12 -1 NULL 14 -1 NULL 15 -1 NULL 22 diff --git a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for GroupingSet-0-8c14c24670a4b06c440346277ce9cf1c b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for GroupingSet-0-8c14c24670a4b06c440346277ce9cf1c deleted file mode 100644 index c7cb747c0a659..0000000000000 --- a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for GroupingSet-0-8c14c24670a4b06c440346277ce9cf1c +++ /dev/null @@ -1,10 +0,0 @@ -1 NULL -3 2 -1 NULL -1 2 -1 NULL 3 2 -1 NULL 4 2 -1 NULL 5 2 -1 NULL 6 2 -1 NULL 12 2 -1 NULL 14 2 -1 NULL 15 2 -1 NULL 22 2 diff --git a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for GroupingSet-0-e44c1897e8971429a72f540962ad530f b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for GroupingSet-0-e44c1897e8971429a72f540962ad530f deleted file mode 100644 index 07135e5f561a1..0000000000000 --- a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for GroupingSet-0-e44c1897e8971429a72f540962ad530f +++ /dev/null @@ -1,10 +0,0 @@ -1 NULL -3 -1 NULL -1 -1 NULL 3 -1 NULL 4 -1 NULL 5 -1 NULL 6 -1 NULL 12 -1 NULL 14 -1 NULL 15 -1 NULL 22 diff --git a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #1-0-518e8dd504680c38b3b01091b9b575d b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #1-0-518e8dd504680c38b3b01091b9b575d deleted file mode 100644 index fc98dca67c95f..0000000000000 --- a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #1-0-518e8dd504680c38b3b01091b9b575d +++ /dev/null @@ -1,6 +0,0 @@ -500 NULL -91 0 -84 1 -105 2 -113 3 -107 4 diff --git a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #1-0-a78e3dbf242f240249e36b3d3fd0926a b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #1-0-a78e3dbf242f240249e36b3d3fd0926a deleted file mode 100644 index c066aeead822e..0000000000000 --- a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #1-0-a78e3dbf242f240249e36b3d3fd0926a +++ /dev/null @@ -1,6 +0,0 @@ -500 NULL 1 -91 0 0 -84 1 0 -105 2 0 -113 3 0 -107 4 0 diff --git a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #2-0-280edc8b2695bc9785ac5f0b08e111f8 b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #2-0-280edc8b2695bc9785ac5f0b08e111f8 deleted file mode 100644 index 579a565416cfb..0000000000000 --- a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #2-0-280edc8b2695bc9785ac5f0b08e111f8 +++ /dev/null @@ -1,10 +0,0 @@ -1 0 5 -1 0 15 -1 0 25 -1 0 60 -1 0 75 -1 0 80 -1 0 100 -1 0 140 -1 0 145 -1 0 150 diff --git a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #2-0-bf180c9d1a18f61b9d9f31bb0115cf89 b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #2-0-bf180c9d1a18f61b9d9f31bb0115cf89 deleted file mode 100644 index fcacbe3f69227..0000000000000 --- a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #2-0-bf180c9d1a18f61b9d9f31bb0115cf89 +++ /dev/null @@ -1,10 +0,0 @@ -1 0 5 0 -1 0 15 0 -1 0 25 0 -1 0 60 0 -1 0 75 0 -1 0 80 0 -1 0 100 0 -1 0 140 0 -1 0 145 0 -1 0 150 0 diff --git a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #3-0-9257085d123728730be96b6d9fbb84ce b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #3-0-9257085d123728730be96b6d9fbb84ce deleted file mode 100644 index fcacbe3f69227..0000000000000 --- a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #3-0-9257085d123728730be96b6d9fbb84ce +++ /dev/null @@ -1,10 +0,0 @@ -1 0 5 0 -1 0 15 0 -1 0 25 0 -1 0 60 0 -1 0 75 0 -1 0 80 0 -1 0 100 0 -1 0 140 0 -1 0 145 0 -1 0 150 0 diff --git a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #3-0-da706fe0f77c3608f621214e6db0d527 b/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #3-0-da706fe0f77c3608f621214e6db0d527 deleted file mode 100644 index 579a565416cfb..0000000000000 --- a/sql/hive/src/test/resources/golden/SPARK-8976 Wrong Result for Rollup #3-0-da706fe0f77c3608f621214e6db0d527 +++ /dev/null @@ -1,10 +0,0 @@ -1 0 5 -1 0 15 -1 0 25 -1 0 60 -1 0 75 -1 0 80 -1 0 100 -1 0 140 -1 0 145 -1 0 150