diff options
author | Herman van Hovell <hvanhovell@databricks.com> | 2016-08-16 23:09:53 -0700 |
---|---|---|
committer | Reynold Xin <rxin@databricks.com> | 2016-08-16 23:09:53 -0700 |
commit | f7c9ff57c17a950cccdc26aadf8768c899a4d572 (patch) | |
tree | 6ff7233e26d192dac7d1af38708707e74d84401a /sql/hive/src/test | |
parent | 4a2c375be2bcd98cc7e00bea920fd6a0f68a4e14 (diff) | |
download | spark-f7c9ff57c17a950cccdc26aadf8768c899a4d572.tar.gz spark-f7c9ff57c17a950cccdc26aadf8768c899a4d572.tar.bz2 spark-f7c9ff57c17a950cccdc26aadf8768c899a4d572.zip |
[SPARK-17068][SQL] Make view-usage visible during analysis
## What changes were proposed in this pull request?
This PR adds a field to subquery alias in order to make the usage of views in a resolved `LogicalPlan` more visible (and more understandable).
For example, the following view and query:
```sql
create view constants as select 1 as id union all select 1 union all select 42
select * from constants;
```
...now yields the following analyzed plan:
```
Project [id#39]
+- SubqueryAlias c, `default`.`constants`
+- Project [gen_attr_0#36 AS id#39]
+- SubqueryAlias gen_subquery_0
+- Union
:- Union
: :- Project [1 AS gen_attr_0#36]
: : +- OneRowRelation$
: +- Project [1 AS gen_attr_1#37]
: +- OneRowRelation$
+- Project [42 AS gen_attr_2#38]
+- OneRowRelation$
```
## How was this patch tested?
Added tests for the two code paths in `SessionCatalogSuite` (sql/core) and `HiveMetastoreCatalogSuite` (sql/hive)
Author: Herman van Hovell <hvanhovell@databricks.com>
Closes #14657 from hvanhovell/SPARK-17068.
Diffstat (limited to 'sql/hive/src/test')
-rw-r--r-- | sql/hive/src/test/scala/org/apache/spark/sql/hive/HiveMetastoreCatalogSuite.scala | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/HiveMetastoreCatalogSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/HiveMetastoreCatalogSuite.scala index 9d72367f43..0477ea4d4c 100644 --- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/HiveMetastoreCatalogSuite.scala +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/HiveMetastoreCatalogSuite.scala @@ -23,12 +23,13 @@ import org.apache.spark.sql.{QueryTest, Row, SaveMode} import org.apache.spark.sql.catalyst.TableIdentifier import org.apache.spark.sql.catalyst.catalog.CatalogTableType import org.apache.spark.sql.catalyst.parser.CatalystSqlParser +import org.apache.spark.sql.catalyst.plans.logical.SubqueryAlias import org.apache.spark.sql.hive.test.TestHiveSingleton import org.apache.spark.sql.internal.SQLConf import org.apache.spark.sql.test.{ExamplePointUDT, SQLTestUtils} import org.apache.spark.sql.types.{DecimalType, IntegerType, StringType, StructField, StructType} -class HiveMetastoreCatalogSuite extends TestHiveSingleton { +class HiveMetastoreCatalogSuite extends TestHiveSingleton with SQLTestUtils { import spark.implicits._ test("struct field should accept underscore in sub-column name") { @@ -57,6 +58,17 @@ class HiveMetastoreCatalogSuite extends TestHiveSingleton { val dataType = StructType((1 to 100).map(field)) assert(CatalystSqlParser.parseDataType(dataType.catalogString) == dataType) } + + test("view relation") { + withView("vw1") { + spark.sql("create view vw1 as select 1 as id") + val plan = spark.sql("select id from vw1").queryExecution.analyzed + val aliases = plan.collect { + case x @ SubqueryAlias("vw1", _, Some(TableIdentifier("vw1", Some("default")))) => x + } + assert(aliases.size == 1) + } + } } class DataSourceWithHiveMetastoreCatalogSuite |