From 74637a6ca717c7d14a0511f026e85a2f538e99ae Mon Sep 17 00:00:00 2001 From: Angerszhuuuu Date: Sat, 26 Jun 2021 09:55:34 -0700 Subject: [PATCH] [SPARK-35905][SQL][TESTS] Fix UT to clean up table/view in SQLQuerySuite ### What changes were proposed in this pull request? Fix UT mistake in SQLQuerySuite ### Why are the changes needed? Fix UT mistake in SQLQuerySuite ### Does this PR introduce _any_ user-facing change? No ### How was this patch tested? Existed UT Closes #33092 from AngersZhuuuu/SPARK-33338-FOLLOWUP. Authored-by: Angerszhuuuu Signed-off-by: Dongjoon Hyun --- .../org/apache/spark/sql/SQLQuerySuite.scala | 50 +++++++++++-------- 1 file changed, 28 insertions(+), 22 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 17d15e7aad..6dbffd7a8b 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 @@ -3586,24 +3586,28 @@ class SQLQuerySuite extends QueryTest with SharedSparkSession with AdaptiveSpark test("SPARK-32372: ResolveReferences.dedupRight should only rewrite attributes for ancestor " + "plans of the conflict plan") { - sql("SELECT name, avg(age) as avg_age FROM person GROUP BY name") - .createOrReplaceTempView("person_a") - sql("SELECT p1.name, p2.avg_age FROM person p1 JOIN person_a p2 ON p1.name = p2.name") - .createOrReplaceTempView("person_b") - sql("SELECT * FROM person_a UNION SELECT * FROM person_b") - .createOrReplaceTempView("person_c") - checkAnswer( - sql("SELECT p1.name, p2.avg_age FROM person_c p1 JOIN person_c p2 ON p1.name = p2.name"), - Row("jim", 20.0) :: Row("mike", 30.0) :: Nil) + withTempView("person_a", "person_b", "person_c") { + sql("SELECT name, avg(age) as avg_age FROM person GROUP BY name") + .createOrReplaceTempView("person_a") + sql("SELECT p1.name, p2.avg_age FROM person p1 JOIN person_a p2 ON p1.name = p2.name") + .createOrReplaceTempView("person_b") + sql("SELECT * FROM person_a UNION SELECT * FROM person_b") + .createOrReplaceTempView("person_c") + checkAnswer( + sql("SELECT p1.name, p2.avg_age FROM person_c p1 JOIN person_c p2 ON p1.name = p2.name"), + Row("jim", 20.0) :: Row("mike", 30.0) :: Nil) + } } test("SPARK-32280: Avoid duplicate rewrite attributes when there're multiple JOINs") { - sql("SELECT 1 AS id").createOrReplaceTempView("A") - sql("SELECT id, 'foo' AS kind FROM A").createOrReplaceTempView("B") - sql("SELECT l.id as id FROM B AS l LEFT SEMI JOIN B AS r ON l.kind = r.kind") - .createOrReplaceTempView("C") - checkAnswer(sql("SELECT 0 FROM ( SELECT * FROM B JOIN C USING (id)) " + - "JOIN ( SELECT * FROM B JOIN C USING (id)) USING (id)"), Row(0)) + withTempView("A", "B", "C") { + sql("SELECT 1 AS id").createOrReplaceTempView("A") + sql("SELECT id, 'foo' AS kind FROM A").createOrReplaceTempView("B") + sql("SELECT l.id as id FROM B AS l LEFT SEMI JOIN B AS r ON l.kind = r.kind") + .createOrReplaceTempView("C") + checkAnswer(sql("SELECT 0 FROM ( SELECT * FROM B JOIN C USING (id)) " + + "JOIN ( SELECT * FROM B JOIN C USING (id)) USING (id)"), Row(0)) + } } test("SPARK-32788: non-partitioned table scan should not have partition filter") { @@ -3629,13 +3633,15 @@ class SQLQuerySuite extends QueryTest with SharedSparkSession with AdaptiveSpark } test("SPARK-33338: GROUP BY using literal map should not fail") { - withTempDir { dir => - sql(s"CREATE TABLE t USING ORC LOCATION '${dir.toURI}' AS SELECT map('k1', 'v1') m, 'k1' k") - Seq( - "SELECT map('k1', 'v1')[k] FROM t GROUP BY 1", - "SELECT map('k1', 'v1')[k] FROM t GROUP BY map('k1', 'v1')[k]", - "SELECT map('k1', 'v1')[k] a FROM t GROUP BY a").foreach { statement => - checkAnswer(sql(statement), Row("v1")) + withTable("t") { + withTempDir { dir => + sql(s"CREATE TABLE t USING ORC LOCATION '${dir.toURI}' AS SELECT map('k1', 'v1') m, 'k1' k") + Seq( + "SELECT map('k1', 'v1')[k] FROM t GROUP BY 1", + "SELECT map('k1', 'v1')[k] FROM t GROUP BY map('k1', 'v1')[k]", + "SELECT map('k1', 'v1')[k] a FROM t GROUP BY a").foreach { statement => + checkAnswer(sql(statement), Row("v1")) + } } } }