Repository: spark Updated Branches: refs/heads/branch-1.2 1d7ee2b79 -> 29e8d5077
[SPARK-2918] [SQL] Support the CTAS in EXPLAIN command Hive supports the `explain` the CTAS, which was supported by Spark SQL previously, however, seems it was reverted after the code refactoring in HiveQL. Author: Cheng Hao <[email protected]> Closes #3357 from chenghao-intel/explain and squashes the following commits: 7aace63 [Cheng Hao] Support the CTAS in EXPLAIN command (cherry picked from commit 6aa0fc9f4d95f09383cbcb5f79166c60697e6683) Signed-off-by: Michael Armbrust <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/spark/repo Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/29e8d507 Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/29e8d507 Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/29e8d507 Branch: refs/heads/branch-1.2 Commit: 29e8d50773c40abe949d6b3284e0e89a0acb45af Parents: 1d7ee2b Author: Cheng Hao <[email protected]> Authored: Thu Nov 20 15:46:00 2014 -0800 Committer: Michael Armbrust <[email protected]> Committed: Thu Nov 20 15:46:43 2014 -0800 ---------------------------------------------------------------------- .../org/apache/spark/sql/hive/HiveQl.scala | 6 +++- .../sql/hive/execution/HiveExplainSuite.scala | 36 ++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/spark/blob/29e8d507/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala ---------------------------------------------------------------------- diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala index 1ca0403..b9283f6 100644 --- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveQl.scala @@ -124,7 +124,6 @@ private[hive] object HiveQl { // Commands that we do not need to explain. protected val noExplainCommands = Seq( - "TOK_CREATETABLE", "TOK_DESCTABLE", "TOK_TRUNCATETABLE" // truncate table" is a NativeCommand, does not need to explain. ) ++ nativeCommands @@ -421,6 +420,11 @@ private[hive] object HiveQl { case Token("TOK_EXPLAIN", explainArgs) if noExplainCommands.contains(explainArgs.head.getText) => ExplainCommand(NoRelation) + case Token("TOK_EXPLAIN", explainArgs) + if "TOK_CREATETABLE" == explainArgs.head.getText => + val Some(crtTbl) :: _ :: extended :: Nil = + getClauses(Seq("TOK_CREATETABLE", "FORMATTED", "EXTENDED"), explainArgs) + ExplainCommand(nodeToPlan(crtTbl), extended != None) case Token("TOK_EXPLAIN", explainArgs) => // Ignore FORMATTED if present. val Some(query) :: _ :: extended :: Nil = http://git-wip-us.apache.org/repos/asf/spark/blob/29e8d507/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveExplainSuite.scala ---------------------------------------------------------------------- diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveExplainSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveExplainSuite.scala index a68fc2a..6972112 100644 --- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveExplainSuite.scala +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveExplainSuite.scala @@ -38,4 +38,40 @@ class HiveExplainSuite extends QueryTest { "== Physical Plan ==", "Code Generation", "== RDD ==") } + + test("explain create table command") { + checkExistence(sql("explain create table temp__b as select * from src limit 2"), true, + "== Physical Plan ==", + "InsertIntoHiveTable", + "Limit", + "src") + + checkExistence(sql("explain extended create table temp__b as select * from src limit 2"), true, + "== Parsed Logical Plan ==", + "== Analyzed Logical Plan ==", + "== Optimized Logical Plan ==", + "== Physical Plan ==", + "CreateTableAsSelect", + "InsertIntoHiveTable", + "Limit", + "src") + + checkExistence(sql( + """ + | EXPLAIN EXTENDED CREATE TABLE temp__b + | ROW FORMAT SERDE "org.apache.hadoop.hive.serde2.columnar.ColumnarSerDe" + | WITH SERDEPROPERTIES("serde_p1"="p1","serde_p2"="p2") + | STORED AS RCFile + | TBLPROPERTIES("tbl_p1"="p11", "tbl_p2"="p22") + | AS SELECT * FROM src LIMIT 2 + """.stripMargin), true, + "== Parsed Logical Plan ==", + "== Analyzed Logical Plan ==", + "== Optimized Logical Plan ==", + "== Physical Plan ==", + "CreateTableAsSelect", + "InsertIntoHiveTable", + "Limit", + "src") + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
