Skip to content

Commit 4ac8135

Browse files
marmbrusrxin
authored andcommitted
[SPARK-2041][SQL] Correctly analyze queries where columnName == tableName.
Author: Michael Armbrust <michael@databricks.com> Closes #985 from marmbrus/tableName and squashes the following commits: 3caaa27 [Michael Armbrust] Correctly analyze queries where columnName == tableName. (cherry picked from commit c7a183b) Signed-off-by: Reynold Xin <rxin@apache.org>
1 parent 70383b1 commit 4ac8135

3 files changed

Lines changed: 11 additions & 1 deletion

File tree

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/plans/logical/LogicalPlan.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ abstract class LogicalPlan extends QueryPlan[LogicalPlan] {
6464
// struct fields.
6565
val options = children.flatMap(_.output).flatMap { option =>
6666
// If the first part of the desired name matches a qualifier for this possible match, drop it.
67-
val remainingParts = if (option.qualifiers contains parts.head) parts.drop(1) else parts
67+
val remainingParts =
68+
if (option.qualifiers.contains(parts.head) && parts.size > 1) parts.drop(1) else parts
6869
if (option.name == remainingParts.head) (option, remainingParts.tail.toList) :: Nil else Nil
6970
}
7071

sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ class SQLQuerySuite extends QueryTest {
2828
// Make sure the tables are loaded.
2929
TestData
3030

31+
test("SPARK-2041 column name equals tablename") {
32+
checkAnswer(
33+
sql("SELECT tableName FROM tableName"),
34+
"test")
35+
}
36+
3137
test("index into array") {
3238
checkAnswer(
3339
sql("SELECT data, data[0], data[0] + data[1], data[0 + 1] FROM arrayData"),

sql/core/src/test/scala/org/apache/spark/sql/TestData.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,4 +114,7 @@ object TestData {
114114
NullStrings(2, "ABC") ::
115115
NullStrings(3, null) :: Nil)
116116
nullStrings.registerAsTable("nullStrings")
117+
118+
case class TableName(tableName: String)
119+
TestSQLContext.sparkContext.parallelize(TableName("test") :: Nil).registerAsTable("tableName")
117120
}

0 commit comments

Comments
 (0)