aboutsummaryrefslogtreecommitdiff
path: root/sql/core
diff options
context:
space:
mode:
authorgatorsmile <gatorsmile@gmail.com>2016-07-03 16:48:04 +0800
committerWenchen Fan <wenchen@databricks.com>2016-07-03 16:48:04 +0800
commitea990f96930066c36055734d4f17eaf8e496eb3f (patch)
tree0ba98d13847dc371527d97db56872ed826685dc2 /sql/core
parent3000b4b29f9165f436f186a8c1ba818e24f90615 (diff)
downloadspark-ea990f96930066c36055734d4f17eaf8e496eb3f.tar.gz
spark-ea990f96930066c36055734d4f17eaf8e496eb3f.tar.bz2
spark-ea990f96930066c36055734d4f17eaf8e496eb3f.zip
[SPARK-16329][SQL] Star Expansion over Table Containing No Column
#### What changes were proposed in this pull request? Star expansion over a table containing zero column does not work since 1.6. However, it works in Spark 1.5.1. This PR is to fix the issue in the master branch. For example, ```scala val rddNoCols = sqlContext.sparkContext.parallelize(1 to 10).map(_ => Row.empty) val dfNoCols = sqlContext.createDataFrame(rddNoCols, StructType(Seq.empty)) dfNoCols.registerTempTable("temp_table_no_cols") sqlContext.sql("select * from temp_table_no_cols").show ``` Without the fix, users will get the following the exception: ``` java.lang.IllegalArgumentException: requirement failed at scala.Predef$.require(Predef.scala:221) at org.apache.spark.sql.catalyst.analysis.UnresolvedStar.expand(unresolved.scala:199) ``` #### How was this patch tested? Tests are added Author: gatorsmile <gatorsmile@gmail.com> Closes #14007 from gatorsmile/starExpansionTableWithZeroColumn.
Diffstat (limited to 'sql/core')
-rw-r--r--sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala31
1 files changed, 31 insertions, 0 deletions
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 084ba9b78e..dca9e5e503 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
@@ -2115,6 +2115,37 @@ class SQLQuerySuite extends QueryTest with SharedSQLContext {
}
}
+ test("Star Expansion - table with zero column") {
+ withTempTable("temp_table_no_cols") {
+ val rddNoCols = sparkContext.parallelize(1 to 10).map(_ => Row.empty)
+ val dfNoCols = spark.createDataFrame(rddNoCols, StructType(Seq.empty))
+ dfNoCols.createTempView("temp_table_no_cols")
+
+ // ResolvedStar
+ checkAnswer(
+ dfNoCols,
+ dfNoCols.select(dfNoCols.col("*")))
+
+ // UnresolvedStar
+ checkAnswer(
+ dfNoCols,
+ sql("SELECT * FROM temp_table_no_cols"))
+ checkAnswer(
+ dfNoCols,
+ dfNoCols.select($"*"))
+
+ var e = intercept[AnalysisException] {
+ sql("SELECT a.* FROM temp_table_no_cols a")
+ }.getMessage
+ assert(e.contains("cannot resolve 'a.*' give input columns ''"))
+
+ e = intercept[AnalysisException] {
+ dfNoCols.select($"b.*")
+ }.getMessage
+ assert(e.contains("cannot resolve 'b.*' give input columns ''"))
+ }
+ }
+
test("Common subexpression elimination") {
// TODO: support subexpression elimination in whole stage codegen
withSQLConf("spark.sql.codegen.wholeStage" -> "false") {