diff --git a/sql/core/src/test/scala/org/apache/spark/sql/ColumnExpressionSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/ColumnExpressionSuite.scala index f984a1b722e36..3e76a488f023a 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/ColumnExpressionSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/ColumnExpressionSuite.scala @@ -25,6 +25,7 @@ import org.apache.hadoop.io.{LongWritable, Text} import org.apache.hadoop.mapreduce.lib.input.{TextInputFormat => NewTextInputFormat} import org.scalatest.Matchers._ +import org.apache.spark.sql.catalyst.analysis.UnresolvedAttribute import org.apache.spark.sql.catalyst.expressions.NamedExpression import org.apache.spark.sql.execution.ProjectExec import org.apache.spark.sql.functions._ @@ -114,6 +115,16 @@ class ColumnExpressionSuite extends QueryTest with SharedSQLContext { Row("a") :: Nil) } + test("SPARK-25769 escape nested columns by backtick each of the column name") { + Seq( + ($"a.b", "`a`.`b`"), + ($"`a.b`", "`a.b`"), + ($"`a`.b", "`a`.`b`"), + ($"`a.b`.c", "`a.b`.`c`")).foreach { case (columnName, sqlString) => + assert(columnName.expr.sql === sqlString) + } + } + test("alias and name") { val df = Seq((1, Seq(1, 2, 3))).toDF("a", "intList") assert(df.select(df("a").as("b")).columns.head === "b") 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 d7a6cb3e35874..b6723cb14555a 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 @@ -2856,21 +2856,6 @@ class SQLQuerySuite extends QueryTest with SharedSQLContext { checkAnswer(sql("select 26393499451 / (1e6 * 1000)"), Row(BigDecimal("26.3934994510000"))) } } - - test("SPARK-25769 escape nested columns") { - import org.apache.spark.sql.catalyst.analysis.UnresolvedAttribute - val sql1 = $"a.b".expr.asInstanceOf[UnresolvedAttribute].sql - assert(sql1 === "`a`.`b`") - - val sql2 = $"`a.b`".expr.asInstanceOf[UnresolvedAttribute].sql - assert(sql2 === "`a.b`") - - val sql3 = $"`a`.b".expr.asInstanceOf[UnresolvedAttribute].sql - assert(sql3 === "`a`.`b`") - - val sql4 = $"`a.b`.c".expr.asInstanceOf[UnresolvedAttribute].sql - assert(sql4 === "`a.b`.`c`") - } } case class Foo(bar: Option[String])