aboutsummaryrefslogtreecommitdiff
path: root/sql/core
diff options
context:
space:
mode:
authorwangfei <wangfei1@huawei.com>2015-01-29 15:47:13 -0800
committerMichael Armbrust <michael@databricks.com>2015-01-29 15:47:18 -0800
commitc1b3eebf97b986439f71afd3c4eccf47b90da2cd (patch)
tree67b08fa72d48327bf27146d2383d24be4675e1c3 /sql/core
parentfbaf9e08961551d3ae5c3629eca01e839b001b8e (diff)
downloadspark-c1b3eebf97b986439f71afd3c4eccf47b90da2cd.tar.gz
spark-c1b3eebf97b986439f71afd3c4eccf47b90da2cd.tar.bz2
spark-c1b3eebf97b986439f71afd3c4eccf47b90da2cd.zip
[SPARK-5373][SQL] Literal in agg grouping expressions leads to incorrect result
`select key, count( * ) from src group by key, 1` will get the wrong answer. e.g. for this table ``` val testData2 = TestSQLContext.sparkContext.parallelize( TestData2(1, 1) :: TestData2(1, 2) :: TestData2(2, 1) :: TestData2(2, 2) :: TestData2(3, 1) :: TestData2(3, 2) :: Nil, 2).toSchemaRDD testData2.registerTempTable("testData2") ``` result of `SELECT a, count(1) FROM testData2 GROUP BY a, 1` is ``` [1,1] [2,2] [3,1] ``` Author: wangfei <wangfei1@huawei.com> Closes #4169 from scwf/agg-bug and squashes the following commits: 05751db [wangfei] fix bugs when literal in agg grouping expressioons
Diffstat (limited to 'sql/core')
-rw-r--r--sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala9
1 files changed, 9 insertions, 0 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 e03444d496..d684278f11 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
@@ -186,6 +186,15 @@ class SQLQuerySuite extends QueryTest with BeforeAndAfterAll {
Seq(Row(1,3), Row(2,3), Row(3,3)))
}
+ test("literal in agg grouping expressions") {
+ checkAnswer(
+ sql("SELECT a, count(1) FROM testData2 GROUP BY a, 1"),
+ Seq(Row(1,2), Row(2,2), Row(3,2)))
+ checkAnswer(
+ sql("SELECT a, count(2) FROM testData2 GROUP BY a, 2"),
+ Seq(Row(1,2), Row(2,2), Row(3,2)))
+ }
+
test("aggregates with nulls") {
checkAnswer(
sql("SELECT MIN(a), MAX(a), AVG(a), SUM(a), COUNT(a) FROM nullInts"),