[SPARK-13419] [SQL] Update SubquerySuite to use checkAnswer for validation

## What changes were proposed in this pull request?

Change SubquerySuite to validate test results utilizing checkAnswer helper method

## How was this patch tested?

Existing tests

Author: Luciano Resende <lresende@apache.org>

Closes #12269 from lresende/SPARK-13419.
This commit is contained in:
Luciano Resende 2016-04-19 21:02:10 -07:00 committed by Davies Liu
parent 8eedf0b553
commit 78b38109ed

View file

@ -55,32 +55,37 @@ class SubquerySuite extends QueryTest with SharedSQLContext {
}
test("simple uncorrelated scalar subquery") {
assertResult(Array(Row(1))) {
sql("select (select 1 as b) as b").collect()
}
checkAnswer(
sql("select (select 1 as b) as b"),
Array(Row(1))
)
assertResult(Array(Row(3))) {
sql("select (select (select 1) + 1) + 1").collect()
}
checkAnswer(
sql("select (select (select 1) + 1) + 1"),
Array(Row(3))
)
// string type
assertResult(Array(Row("s"))) {
sql("select (select 's' as s) as b").collect()
}
checkAnswer(
sql("select (select 's' as s) as b"),
Array(Row("s"))
)
}
test("uncorrelated scalar subquery in CTE") {
assertResult(Array(Row(1))) {
checkAnswer(
sql("with t2 as (select 1 as b, 2 as c) " +
"select a from (select 1 as a union all select 2 as a) t " +
"where a = (select max(b) from t2) ").collect()
}
"where a = (select max(b) from t2) "),
Array(Row(1))
)
}
test("uncorrelated scalar subquery should return null if there is 0 rows") {
assertResult(Array(Row(null))) {
sql("select (select 's' as s limit 0) as b").collect()
}
checkAnswer(
sql("select (select 's' as s limit 0) as b"),
Array(Row(null))
)
}
test("runtime error when the number of rows is greater than 1") {
@ -88,29 +93,34 @@ class SubquerySuite extends QueryTest with SharedSQLContext {
sql("select (select a from (select 1 as a union all select 2 as a) t) as b").collect()
}
assert(error2.getMessage.contains(
"more than one row returned by a subquery used as an expression"))
"more than one row returned by a subquery used as an expression")
)
}
test("uncorrelated scalar subquery on a DataFrame generated query") {
val df = Seq((1, "one"), (2, "two"), (3, "three")).toDF("key", "value")
df.registerTempTable("subqueryData")
assertResult(Array(Row(4))) {
sql("select (select key from subqueryData where key > 2 order by key limit 1) + 1").collect()
}
checkAnswer(
sql("select (select key from subqueryData where key > 2 order by key limit 1) + 1"),
Array(Row(4))
)
assertResult(Array(Row(-3))) {
sql("select -(select max(key) from subqueryData)").collect()
}
checkAnswer(
sql("select -(select max(key) from subqueryData)"),
Array(Row(-3))
)
assertResult(Array(Row(null))) {
sql("select (select value from subqueryData limit 0)").collect()
}
checkAnswer(
sql("select (select value from subqueryData limit 0)"),
Array(Row(null))
)
assertResult(Array(Row("two"))) {
checkAnswer(
sql("select (select min(value) from subqueryData" +
" where key = (select max(key) from subqueryData) - 1)").collect()
}
" where key = (select max(key) from subqueryData) - 1)"),
Array(Row("two"))
)
}
test("EXISTS predicate subquery") {