Skip to content

Commit a4bae33

Browse files
author
Davies Liu
committed
address comments
1 parent 016c36c commit a4bae33

File tree

3 files changed

+49
-5
lines changed

3 files changed

+49
-5
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/subquery.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ case class ScalarSubquery(query: LogicalPlan) extends SubqueryExpression with Co
5555

5656
override def withNewPlan(plan: LogicalPlan): ScalarSubquery = ScalarSubquery(plan)
5757

58+
// TODO: support sql()
59+
5860
// the first column in first row from `query`.
5961
private var result: Any = null
6062

sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/CatalystQlSuite.scala

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import org.apache.spark.sql.catalyst.analysis._
2222
import org.apache.spark.sql.catalyst.expressions._
2323
import org.apache.spark.sql.catalyst.plans.PlanTest
2424
import org.apache.spark.sql.catalyst.plans.logical._
25+
import org.apache.spark.sql.types.BooleanType
2526
import org.apache.spark.unsafe.types.CalendarInterval
2627

2728
class CatalystQlSuite extends PlanTest {
@@ -203,10 +204,47 @@ class CatalystQlSuite extends PlanTest {
203204
}
204205

205206
test("subquery") {
206-
parser.parsePlan("select (select max(b) from s) ss from t")
207-
parser.parsePlan("select * from t where a = (select b from s)")
208-
parser.parsePlan("select * from t where a > (select b from s)")
209-
parser.parsePlan("select * from t group by g having a = (select b from s)")
210-
parser.parsePlan("select * from t group by g having a > (select b from s)")
207+
comparePlans(
208+
parser.parsePlan("select (select max(b) from s) ss from t"),
209+
Project(
210+
UnresolvedAlias(
211+
Alias(
212+
ScalarSubquery(
213+
Project(
214+
UnresolvedAlias(
215+
UnresolvedFunction("max", UnresolvedAttribute("b") :: Nil, false)) :: Nil,
216+
UnresolvedRelation(TableIdentifier("s")))),
217+
"ss")(ExprId(0))) :: Nil,
218+
UnresolvedRelation(TableIdentifier("t"))))
219+
comparePlans(
220+
parser.parsePlan("select * from t where a = (select b from s)"),
221+
Project(
222+
UnresolvedAlias(
223+
UnresolvedStar(None)) :: Nil,
224+
Filter(
225+
EqualTo(
226+
UnresolvedAttribute("a"),
227+
ScalarSubquery(
228+
Project(
229+
UnresolvedAlias(
230+
UnresolvedAttribute("b")) :: Nil,
231+
UnresolvedRelation(TableIdentifier("s"))))),
232+
UnresolvedRelation(TableIdentifier("t")))))
233+
comparePlans(
234+
parser.parsePlan("select * from t group by g having a > (select b from s)"),
235+
Filter(
236+
Cast(
237+
GreaterThan(
238+
UnresolvedAttribute("a"),
239+
ScalarSubquery(
240+
Project(
241+
UnresolvedAlias(
242+
UnresolvedAttribute("b")) :: Nil,
243+
UnresolvedRelation(TableIdentifier("s"))))),
244+
BooleanType),
245+
Aggregate(
246+
UnresolvedAttribute("g") :: Nil,
247+
UnresolvedAlias(UnresolvedStar(None)) :: Nil,
248+
UnresolvedRelation(TableIdentifier("t")))))
211249
}
212250
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2115,6 +2115,10 @@ class SQLQuerySuite extends QueryTest with SharedSQLContext {
21152115
"select a from (select 1 as a union all select 2 as a) t " +
21162116
"where a = (select max(b) from t2) ").collect()
21172117
}
2118+
2119+
assertResult(Array(Row(3))) {
2120+
sql("select (select (select 1) + 1) + 1").collect()
2121+
}
21182122
}
21192123

21202124
test("SPARK-13056: Null in map value causes NPE") {

0 commit comments

Comments
 (0)