This is an automated email from the ASF dual-hosted git repository. maxgekk 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 da51dc7aa76 [SPARK-38742][SQL][TESTS] Move the tests `MISSING_COLUMN` from SQLQuerySuite to QueryCompilationErrorsSuite da51dc7aa76 is described below commit da51dc7aa7674f158fb82f9f735af7d46f6a9399 Author: panbingkun <pbk1...@gmail.com> AuthorDate: Mon Apr 25 21:53:17 2022 +0300 [SPARK-38742][SQL][TESTS] Move the tests `MISSING_COLUMN` from SQLQuerySuite to QueryCompilationErrorsSuite ### What changes were proposed in this pull request? This pr aims to move tests for the error class MISSING_COLUMN from SQLQuerySuite to QueryCompilationErrorsSuite, it's a followup of SPARK-37935. ### Why are the changes needed? To improve code maintenance. ### Does this PR introduce any user-facing change? No. ### How was this patch tested? By running the moved tests: ``` $ build/sbt "sql/testOnly *QueryCompilationErrorsSuite*" ``` Closes #36280 from panbingkun/SPARK-38742. Authored-by: panbingkun <pbk1...@gmail.com> Signed-off-by: Max Gekk <max.g...@gmail.com> --- .../scala/org/apache/spark/sql/SQLQuerySuite.scala | 38 ------------- .../sql/errors/QueryCompilationErrorsSuite.scala | 63 ++++++++++++++++++++++ 2 files changed, 63 insertions(+), 38 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 70b38db034f..4d384d3286b 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 @@ -1114,31 +1114,6 @@ class SQLQuerySuite extends QueryTest with SharedSparkSession with AdaptiveSpark ) } - test("SPARK-17863: SELECT distinct does not work correctly if order by missing attribute") { - checkAnswer( - sql("""select distinct struct.a, struct.b - |from ( - | select named_struct('a', 1, 'b', 2, 'c', 3) as struct - | union all - | select named_struct('a', 1, 'b', 2, 'c', 4) as struct) tmp - |order by a, b - |""".stripMargin), - Row(1, 2) :: Nil) - - val error = intercept[AnalysisException] { - sql("""select distinct struct.a, struct.b - |from ( - | select named_struct('a', 1, 'b', 2, 'c', 3) as struct - | union all - | select named_struct('a', 1, 'b', 2, 'c', 4) as struct) tmp - |order by struct.a, struct.b - |""".stripMargin) - } - assert(error.getErrorClass == "MISSING_COLUMN") - assert(error.messageParameters.sameElements(Array("struct.a", "a, b"))) - - } - test("cast boolean to string") { // TODO Ensure true/false string letter casing is consistent with Hive in all cases. checkAnswer( @@ -2734,19 +2709,6 @@ class SQLQuerySuite extends QueryTest with SharedSparkSession with AdaptiveSpark } } - test("SPARK-21335: support un-aliased subquery") { - withTempView("v") { - Seq(1 -> "a").toDF("i", "j").createOrReplaceTempView("v") - checkAnswer(sql("SELECT i from (SELECT i FROM v)"), Row(1)) - - val e = intercept[AnalysisException](sql("SELECT v.i from (SELECT i FROM v)")) - assert(e.getErrorClass == "MISSING_COLUMN") - assert(e.messageParameters.sameElements(Array("v.i", "__auto_generated_subquery_name.i"))) - - checkAnswer(sql("SELECT __auto_generated_subquery_name.i from (SELECT i FROM v)"), Row(1)) - } - } - test("SPARK-21743: top-most limit should not cause memory leak") { // In unit test, Spark will fail the query if memory leak detected. spark.range(100).groupBy("id").count().limit(1).collect() 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 8b63ba52ab8..f1325a68366 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 @@ -409,6 +409,69 @@ class QueryCompilationErrorsSuite "can only contain StringType as a key type for a MapType." ) } + + test("MISSING_COLUMN: SELECT distinct does not work correctly " + + "if order by missing attribute") { + checkAnswer( + sql( + """select distinct struct.a, struct.b + |from ( + | select named_struct('a', 1, 'b', 2, 'c', 3) as struct + | union all + | select named_struct('a', 1, 'b', 2, 'c', 4) as struct) tmp + |order by a, b + |""".stripMargin), Row(1, 2) :: Nil) + + checkErrorClass( + exception = intercept[AnalysisException] { + sql( + """select distinct struct.a, struct.b + |from ( + | select named_struct('a', 1, 'b', 2, 'c', 3) as struct + | union all + | select named_struct('a', 1, 'b', 2, 'c', 4) as struct) tmp + |order by struct.a, struct.b + |""".stripMargin) + }, + errorClass = "MISSING_COLUMN", + msg = """Column 'struct.a' does not exist. """ + + """Did you mean one of the following\? \[a, b\]; line 6 pos 9; + |'Sort \['struct.a ASC NULLS FIRST, 'struct.b ASC NULLS FIRST\], true + |\+\- Distinct + | \+\- Project \[struct#\w+\.a AS a#\w+, struct#\w+\.b AS b#\w+\] + | \+\- SubqueryAlias tmp + | \+\- Union false, false + | :\- Project \[named_struct\(a, 1, b, 2, c, 3\) AS struct#\w+\] + | : \+\- OneRowRelation + | \+\- Project \[named_struct\(a, 1, b, 2, c, 4\) AS struct#\w+\] + | \+\- OneRowRelation + |""".stripMargin, + matchMsg = true) + } + + test("MISSING_COLUMN - SPARK-21335: support un-aliased subquery") { + withTempView("v") { + Seq(1 -> "a").toDF("i", "j").createOrReplaceTempView("v") + checkAnswer(sql("SELECT i from (SELECT i FROM v)"), Row(1)) + + checkErrorClass( + exception = intercept[AnalysisException](sql("SELECT v.i from (SELECT i FROM v)")), + errorClass = "MISSING_COLUMN", + msg = """Column 'v.i' does not exist. Did you mean one of the following\? """ + + """\[__auto_generated_subquery_name.i\]; line 1 pos 7; + |'Project \['v.i\] + |\+\- SubqueryAlias __auto_generated_subquery_name + | \+\- Project \[i#\w+\] + | \+\- SubqueryAlias v + | \+\- View \(`v`, \[i#\w+,j#\w+\]\) + | \+\- Project \[_\w+#\w+ AS i#\w+, _\w+#\w+ AS j#\w+\] + | \+\- LocalRelation \[_\w+#\w+, _\w+#\w+\] + |""".stripMargin, + matchMsg = true) + + checkAnswer(sql("SELECT __auto_generated_subquery_name.i from (SELECT i FROM v)"), Row(1)) + } + } } class MyCastToString extends SparkUserDefinedFunction( --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org For additional commands, e-mail: commits-h...@spark.apache.org