diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/namedExpressions.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/namedExpressions.scala index 049ea77691395..76d0ed0b99466 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/namedExpressions.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/namedExpressions.scala @@ -378,6 +378,7 @@ case class OuterReference(e: NamedExpression) override def nullable: Boolean = e.nullable override def prettyName: String = "outer" + override def sql: String = s"$prettyName(${e.sql})" override def name: String = e.name override def qualifier: Seq[String] = e.qualifier override def exprId: ExprId = e.exprId diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/AnalysisErrorSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/AnalysisErrorSuite.scala index 41c3c889286ec..957c1b7a294ce 100644 --- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/AnalysisErrorSuite.scala +++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/AnalysisErrorSuite.scala @@ -641,12 +641,12 @@ class AnalysisErrorSuite extends AnalysisTest { val t1 = LocalRelation(a, b) val t2 = LocalRelation(c) val conditions = Seq( - (abs($"a") === $"c", "abs(`a`) = outer()"), - (abs($"a") <=> $"c", "abs(`a`) <=> outer()"), - ($"a" + 1 === $"c", "(`a` + 1) = outer()"), - ($"a" + $"b" === $"c", "(`a` + `b`) = outer()"), - ($"a" + $"c" === $"b", "(`a` + outer()) = `b`"), - (And($"a" === $"c", Cast($"a", IntegerType) === $"c"), "CAST(`a` AS INT) = outer()")) + (abs($"a") === $"c", "abs(`a`) = outer(`c`)"), + (abs($"a") <=> $"c", "abs(`a`) <=> outer(`c`)"), + ($"a" + 1 === $"c", "(`a` + 1) = outer(`c`)"), + ($"a" + $"b" === $"c", "(`a` + `b`) = outer(`c`)"), + ($"a" + $"c" === $"b", "(`a` + outer(`c`)) = `b`"), + (And($"a" === $"c", Cast($"a", IntegerType) === $"c"), "CAST(`a` AS INT) = outer(`c`)")) conditions.foreach { case (cond, msg) => val plan = Project( ScalarSubquery( diff --git a/sql/core/src/test/resources/sql-tests/results/having.sql.out b/sql/core/src/test/resources/sql-tests/results/having.sql.out index ee1956ee58757..2a3e68a71719d 100644 --- a/sql/core/src/test/resources/sql-tests/results/having.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/having.sql.out @@ -1,5 +1,5 @@ -- Automatically generated by SQLQueryTestSuite --- Number of queries: 9 +-- Number of queries: 13 -- !query 0 @@ -85,31 +85,31 @@ struct -- !query 9 SELECT c1 FROM VALUES (1, 2) as t(c1, c2) GROUP BY GROUPING SETS(t.c1) HAVING t.c1 = 1 --- !query schema +-- !query 9 schema struct --- !query output +-- !query 9 output 1 -- !query 10 SELECT c1 FROM VALUES (1, 2) as t(c1, c2) GROUP BY CUBE(t.c1) HAVING t.c1 = 1 --- !query schema +-- !query 10 schema struct --- !query output +-- !query 10 output 1 -- !query 11 SELECT c1 FROM VALUES (1, 2) as t(c1, c2) GROUP BY ROLLUP(t.c1) HAVING t.c1 = 1 --- !query schema +-- !query 11 schema struct --- !query output +-- !query 11 output 1 -- !query 12 SELECT c1 FROM VALUES (1, 2) as t(c1, c2) GROUP BY t.c1 HAVING t.c1 = 1 --- !query schema +-- !query 12 schema struct --- !query output +-- !query 12 output 1 diff --git a/sql/core/src/test/resources/sql-tests/results/subquery/negative-cases/invalid-correlation.sql.out b/sql/core/src/test/resources/sql-tests/results/subquery/negative-cases/invalid-correlation.sql.out index e49978ddb1ce2..11157f0316388 100644 --- a/sql/core/src/test/resources/sql-tests/results/subquery/negative-cases/invalid-correlation.sql.out +++ b/sql/core/src/test/resources/sql-tests/results/subquery/negative-cases/invalid-correlation.sql.out @@ -108,7 +108,7 @@ struct<> -- !query 7 output org.apache.spark.sql.AnalysisException Expressions referencing the outer query are not supported outside of WHERE/HAVING clauses: -Aggregate [min(outer(t2a#x)) AS min(outer())#x] +Aggregate [min(outer(t2a#x)) AS min(outer(t2.`t2a`))#x] +- SubqueryAlias `t3` +- Project [t3a#x, t3b#x, t3c#x] +- SubqueryAlias `t3` diff --git a/sql/core/src/test/scala/org/apache/spark/sql/SubquerySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/SubquerySuite.scala index 5fb992e1ca66c..bfd884f170fa4 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/SubquerySuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/SubquerySuite.scala @@ -536,7 +536,7 @@ class SubquerySuite extends QueryTest with SharedSQLContext { sql("select a, (select sum(b) from l l2 where l2.a < l1.a) sum_b from l l1") } assert(msg1.getMessage.contains( - "Correlated column is not allowed in predicate (l2.`a` < outer())")) + "Correlated column is not allowed in predicate (l2.`a` < outer(l1.`a`))")) } test("disjunctive correlated scalar subquery") {