You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by gu...@apache.org on 2022/04/12 03:59:59 UTC
[spark] branch master updated: [SPARK-38730][SPARK-38731][SQL][TESTS] Move tests for error classes of grouping
This is an automated email from the ASF dual-hosted git repository.
gurwls223 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/master by this push:
new a43155c0d9c [SPARK-38730][SPARK-38731][SQL][TESTS] Move tests for error classes of grouping
a43155c0d9c is described below
commit a43155c0d9c1d196453117be2a1d10eb6c6f7b79
Author: Max Gekk <ma...@gmail.com>
AuthorDate: Tue Apr 12 12:59:40 2022 +0900
[SPARK-38730][SPARK-38731][SQL][TESTS] Move tests for error classes of grouping
### What changes were proposed in this pull request?
In the PR, I propose to get together all tests for error classes related to grouping and move them to `QueryCompilationErrorsSuite`.
### Why are the changes needed?
To improve code maintenance - all tests for error classes are placed to Query.*ErrorsSuite. Also exception are raised from `QueryCompilationErrors`, so, tests should be in `QueryCompilationErrorsSuite` for consistency.
### Does this PR introduce _any_ user-facing change?
No.
### How was this patch tested?
By the affected test suites:
```
$ build/sbt "test:testOnly *SQLQuerySuite"
$ build/sbt "test:testOnly *DataFrameAggregateSuite"
$ build/sbt "test:testOnly *QueryCompilationErrorsSuite"
```
Closes #36147 from MaxGekk/move-group-error-class-tests.
Authored-by: Max Gekk <ma...@gmail.com>
Signed-off-by: Hyukjin Kwon <gu...@apache.org>
---
.../apache/spark/sql/DataFrameAggregateSuite.scala | 17 -------
.../scala/org/apache/spark/sql/SQLQuerySuite.scala | 10 ----
.../sql/errors/QueryCompilationErrorsSuite.scala | 55 +++++++++++++++++++++-
3 files changed, 54 insertions(+), 28 deletions(-)
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/DataFrameAggregateSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/DataFrameAggregateSuite.scala
index 425be96d6b8..7962103bcdd 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/DataFrameAggregateSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/DataFrameAggregateSuite.scala
@@ -197,23 +197,6 @@ class DataFrameAggregateSuite extends QueryTest
intercept[AnalysisException] {
courseSales.groupBy().agg(grouping_id("course")).explain()
}
-
- val groupingColMismatchEx = intercept[AnalysisException] {
- courseSales.cube("course", "year").agg(grouping("earnings")).explain()
- }
- assert(groupingColMismatchEx.getErrorClass == "GROUPING_COLUMN_MISMATCH")
- assert(groupingColMismatchEx.getMessage.matches(
- "Column of grouping \\(earnings.*\\) can't be found in grouping columns course.*,year.*"))
-
-
- val groupingIdColMismatchEx = intercept[AnalysisException] {
- courseSales.cube("course", "year").agg(grouping_id("earnings")).explain()
- }
- assert(groupingIdColMismatchEx.getErrorClass == "GROUPING_ID_COLUMN_MISMATCH")
- assert(groupingIdColMismatchEx.getMessage.matches(
- "Columns of grouping_id \\(earnings.*\\) does not match " +
- "grouping columns \\(course.*,year.*\\)"),
- groupingIdColMismatchEx.getMessage)
}
test("grouping/grouping_id inside window function") {
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 f25a3e399aa..81067eef401 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
@@ -3417,20 +3417,10 @@ class SQLQuerySuite extends QueryTest with SharedSparkSession with AdaptiveSpark
withSQLConf(SQLConf.LEGACY_INTEGER_GROUPING_ID.key -> "true") {
testGroupingIDs(32, Seq(0, 1))
- val ex = intercept[AnalysisException] {
- testGroupingIDs(33)
- }
- assert(ex.getMessage.contains("Grouping sets size cannot be greater than 32"))
- assert(ex.getErrorClass == "GROUPING_SIZE_LIMIT_EXCEEDED")
}
withSQLConf(SQLConf.LEGACY_INTEGER_GROUPING_ID.key -> "false") {
testGroupingIDs(64, Seq(0L, 1L))
- val ex = intercept[AnalysisException] {
- testGroupingIDs(65)
- }
- assert(ex.getMessage.contains("Grouping sets size cannot be greater than 64"))
- assert(ex.getErrorClass == "GROUPING_SIZE_LIMIT_EXCEEDED")
}
}
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/errors/QueryCompilationErrorsSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/errors/QueryCompilationErrorsSuite.scala
index e9a86df7f07..6af95496c89 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/errors/QueryCompilationErrorsSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/errors/QueryCompilationErrorsSuite.scala
@@ -17,7 +17,7 @@
package org.apache.spark.sql.errors
-import org.apache.spark.sql.{AnalysisException, IntegratedUDFTestUtils, QueryTest}
+import org.apache.spark.sql.{AnalysisException, IntegratedUDFTestUtils, QueryTest, Row}
import org.apache.spark.sql.api.java.{UDF1, UDF2, UDF23Test}
import org.apache.spark.sql.expressions.SparkUserDefinedFunction
import org.apache.spark.sql.functions.{grouping, grouping_id, sum, udf}
@@ -254,6 +254,59 @@ class QueryCompilationErrorsSuite extends QueryTest with SharedSparkSession {
assert(e.getSqlState === "0A000")
assert(e.message === "The feature is not supported: UDF class with 24 type arguments")
}
+
+ test("GROUPING_COLUMN_MISMATCH: not found the grouping column") {
+ val groupingColMismatchEx = intercept[AnalysisException] {
+ courseSales.cube("course", "year").agg(grouping("earnings")).explain()
+ }
+ assert(groupingColMismatchEx.getErrorClass === "GROUPING_COLUMN_MISMATCH")
+ assert(groupingColMismatchEx.getSqlState === "42000")
+ assert(groupingColMismatchEx.getMessage.matches(
+ "Column of grouping \\(earnings.*\\) can't be found in grouping columns course.*,year.*"))
+ }
+
+ test("GROUPING_ID_COLUMN_MISMATCH: columns of grouping_id does not match") {
+ val groupingIdColMismatchEx = intercept[AnalysisException] {
+ courseSales.cube("course", "year").agg(grouping_id("earnings")).explain()
+ }
+ assert(groupingIdColMismatchEx.getErrorClass === "GROUPING_ID_COLUMN_MISMATCH")
+ assert(groupingIdColMismatchEx.getSqlState === "42000")
+ assert(groupingIdColMismatchEx.getMessage.matches(
+ "Columns of grouping_id \\(earnings.*\\) does not match " +
+ "grouping columns \\(course.*,year.*\\)"),
+ groupingIdColMismatchEx.getMessage)
+ }
+
+ test("GROUPING_SIZE_LIMIT_EXCEEDED: max size of grouping set") {
+ withTempView("t") {
+ sql("CREATE TEMPORARY VIEW t AS SELECT * FROM " +
+ s"VALUES(${(0 until 65).map { _ => 1 }.mkString(", ")}, 3) AS " +
+ s"t(${(0 until 65).map { i => s"k$i" }.mkString(", ")}, v)")
+
+ def testGroupingIDs(numGroupingSet: Int, expectedIds: Seq[Any] = Nil): Unit = {
+ val groupingCols = (0 until numGroupingSet).map { i => s"k$i" }
+ val df = sql("SELECT GROUPING_ID(), SUM(v) FROM t GROUP BY " +
+ s"GROUPING SETS ((${groupingCols.mkString(",")}), (${groupingCols.init.mkString(",")}))")
+ checkAnswer(df, expectedIds.map { id => Row(id, 3) })
+ }
+
+ withSQLConf(SQLConf.LEGACY_INTEGER_GROUPING_ID.key -> "true") {
+ val ex = intercept[AnalysisException] {
+ testGroupingIDs(33)
+ }
+ assert(ex.getMessage.contains("Grouping sets size cannot be greater than 32"))
+ assert(ex.getErrorClass == "GROUPING_SIZE_LIMIT_EXCEEDED")
+ }
+
+ withSQLConf(SQLConf.LEGACY_INTEGER_GROUPING_ID.key -> "false") {
+ val ex = intercept[AnalysisException] {
+ testGroupingIDs(65)
+ }
+ assert(ex.getMessage.contains("Grouping sets size cannot be greater than 64"))
+ assert(ex.getErrorClass == "GROUPING_SIZE_LIMIT_EXCEEDED")
+ }
+ }
+ }
}
class MyCastToString extends SparkUserDefinedFunction(
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org