Skip to content

Commit 3ccff2e

Browse files
committed
correctly check analysis for scalar sub-queries
1 parent 771abeb commit 3ccff2e

2 files changed

Lines changed: 11 additions & 2 deletions

File tree

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CheckAnalysis.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,8 @@ trait CheckAnalysis extends PredicateHelper {
130130
}
131131

132132
case s @ ScalarSubquery(query, conditions, _) =>
133+
checkAnalysis(query)
134+
133135
// If no correlation, the output must be exactly one column
134136
if (conditions.isEmpty && query.output.size != 1) {
135137
failAnalysis(
@@ -179,7 +181,6 @@ trait CheckAnalysis extends PredicateHelper {
179181
case fail => failAnalysis(s"Correlated scalar subqueries must be Aggregated: $fail")
180182
}
181183
}
182-
checkAnalysis(query)
183184
s
184185

185186
case s: SubqueryExpression =>

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class SubquerySuite extends QueryTest with SharedSQLContext {
7272
}
7373
}
7474

75-
test("rdd deserialization does not crash [SPARK-15791]") {
75+
test("SPARK-15791: rdd deserialization does not crash") {
7676
sql("select (select 1 as b) as b").rdd.count()
7777
}
7878

@@ -867,4 +867,12 @@ class SubquerySuite extends QueryTest with SharedSQLContext {
867867
sql("select * from l, r where l.a = r.c + 1 AND (exists (select * from r) OR l.a = r.c)"),
868868
Row(3, 3.0, 2, 3.0) :: Row(3, 3.0, 2, 3.0) :: Nil)
869869
}
870+
871+
test("SPARK-20688: correctly check analysis for scalar sub-queries") {
872+
withTempView("t") {
873+
Seq(1 -> "a").toDF("i", "j").createTempView("t")
874+
val e = intercept[AnalysisException](sql("SELECT (SELECT count(*) FROM t WHERE a = 1)"))
875+
assert(e.message.contains("cannot resolve '`a`' given input columns: [i, j]"))
876+
}
877+
}
870878
}

0 commit comments

Comments
 (0)