Repository: spark
Updated Branches:
  refs/heads/branch-2.1 f67208369 -> b89c38b2e


[SPARK-17659][SQL] Partitioned View is Not Supported By SHOW CREATE TABLE

### What changes were proposed in this pull request?

`Partitioned View` is not supported by SPARK SQL. For Hive partitioned view, 
SHOW CREATE TABLE is unable to generate the right DDL. Thus, SHOW CREATE TABLE 
should not support it like the other Hive-only features. This PR is to issue an 
exception when detecting the view is a partitioned view.
### How was this patch tested?

Added a test case

Author: gatorsmile <[email protected]>

Closes #15233 from gatorsmile/partitionedView.

(cherry picked from commit e256392a128c8fffa8abb86ab99224ae09b0e1ff)
Signed-off-by: gatorsmile <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/b89c38b2
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/b89c38b2
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/b89c38b2

Branch: refs/heads/branch-2.1
Commit: b89c38b2ee2c418ad2de4f2fc70ad9f81eac3240
Parents: f672083
Author: gatorsmile <[email protected]>
Authored: Wed Nov 9 00:11:48 2016 -0800
Committer: gatorsmile <[email protected]>
Committed: Wed Nov 9 00:12:07 2016 -0800

----------------------------------------------------------------------
 .../spark/sql/execution/command/tables.scala    |  2 +-
 .../spark/sql/hive/client/HiveClientImpl.scala  |  4 +++
 .../spark/sql/hive/ShowCreateTableSuite.scala   | 28 ++++++++++++++++++++
 3 files changed, 33 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/spark/blob/b89c38b2/sql/core/src/main/scala/org/apache/spark/sql/execution/command/tables.scala
----------------------------------------------------------------------
diff --git 
a/sql/core/src/main/scala/org/apache/spark/sql/execution/command/tables.scala 
b/sql/core/src/main/scala/org/apache/spark/sql/execution/command/tables.scala
index 3a856fa..e49a1f5 100644
--- 
a/sql/core/src/main/scala/org/apache/spark/sql/execution/command/tables.scala
+++ 
b/sql/core/src/main/scala/org/apache/spark/sql/execution/command/tables.scala
@@ -780,7 +780,7 @@ case class ShowCreateTableCommand(table: TableIdentifier) 
extends RunnableComman
   private def showCreateHiveTable(metadata: CatalogTable): String = {
     def reportUnsupportedError(features: Seq[String]): Unit = {
       throw new AnalysisException(
-        s"Failed to execute SHOW CREATE TABLE against table 
${metadata.identifier.quotedString}, " +
+        s"Failed to execute SHOW CREATE TABLE against table/view 
${metadata.identifier}, " +
           "which is created by Hive and uses the following unsupported 
feature(s)\n" +
           features.map(" - " + _).mkString("\n")
       )

http://git-wip-us.apache.org/repos/asf/spark/blob/b89c38b2/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveClientImpl.scala
----------------------------------------------------------------------
diff --git 
a/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveClientImpl.scala 
b/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveClientImpl.scala
index 84873bb..2bf9a26 100644
--- 
a/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveClientImpl.scala
+++ 
b/sql/hive/src/main/scala/org/apache/spark/sql/hive/client/HiveClientImpl.scala
@@ -377,6 +377,10 @@ private[hive] class HiveClientImpl(
         unsupportedFeatures += "bucketing"
       }
 
+      if (h.getTableType == HiveTableType.VIRTUAL_VIEW && partCols.nonEmpty) {
+        unsupportedFeatures += "partitioned view"
+      }
+
       val properties = Option(h.getParameters).map(_.asScala.toMap).orNull
 
       CatalogTable(

http://git-wip-us.apache.org/repos/asf/spark/blob/b89c38b2/sql/hive/src/test/scala/org/apache/spark/sql/hive/ShowCreateTableSuite.scala
----------------------------------------------------------------------
diff --git 
a/sql/hive/src/test/scala/org/apache/spark/sql/hive/ShowCreateTableSuite.scala 
b/sql/hive/src/test/scala/org/apache/spark/sql/hive/ShowCreateTableSuite.scala
index e925921..68df809 100644
--- 
a/sql/hive/src/test/scala/org/apache/spark/sql/hive/ShowCreateTableSuite.scala
+++ 
b/sql/hive/src/test/scala/org/apache/spark/sql/hive/ShowCreateTableSuite.scala
@@ -265,6 +265,34 @@ class ShowCreateTableSuite extends QueryTest with 
SQLTestUtils with TestHiveSing
     }
   }
 
+  test("hive partitioned view is not supported") {
+    withTable("t1") {
+      withView("v1") {
+        sql(
+          s"""
+             |CREATE TABLE t1 (c1 INT, c2 STRING)
+             |PARTITIONED BY (
+             |  p1 BIGINT COMMENT 'bla',
+             |  p2 STRING )
+           """.stripMargin)
+
+        createRawHiveTable(
+          s"""
+             |CREATE VIEW v1
+             |PARTITIONED ON (p1, p2)
+             |AS SELECT * from t1
+           """.stripMargin
+        )
+
+        val cause = intercept[AnalysisException] {
+          sql("SHOW CREATE TABLE v1")
+        }
+
+        assert(cause.getMessage.contains(" - partitioned view"))
+      }
+    }
+  }
+
   private def createRawHiveTable(ddl: String): Unit = {
     
hiveContext.sharedState.externalCatalog.asInstanceOf[HiveExternalCatalog].client.runSqlHive(ddl)
   }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to