From f6961e59c2975dff2ca6fc9cab9bcd175113639f Mon Sep 17 00:00:00 2001 From: Cheng Hao Date: Wed, 5 Aug 2015 22:45:06 +0800 Subject: [PATCH 1/2] fix bug of explain CTAS --- .../scala/org/apache/spark/sql/execution/commands.scala | 2 ++ .../spark/sql/hive/execution/CreateTableAsSelect.scala | 3 ++- .../apache/spark/sql/hive/execution/HiveExplainSuite.scala | 7 ++++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/commands.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/commands.scala index 6b83025d5a153..e5ddd855ac164 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/execution/commands.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/commands.scala @@ -69,6 +69,8 @@ private[sql] case class ExecutedCommand(cmd: RunnableCommand) extends SparkPlan val converted = sideEffectResult.map(convert(_).asInstanceOf[InternalRow]) sqlContext.sparkContext.parallelize(converted, 1) } + + override def argString: String = s"[cmd:$cmd]" } /** diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/execution/CreateTableAsSelect.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/execution/CreateTableAsSelect.scala index 84358cb73c9e3..047886d35afd4 100644 --- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/execution/CreateTableAsSelect.scala +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/execution/CreateTableAsSelect.scala @@ -37,6 +37,7 @@ case class CreateTableAsSelect( allowExisting: Boolean) extends RunnableCommand { + override def children: Seq[LogicalPlan] = query :: Nil def database: String = tableDesc.database def tableName: String = tableDesc.name @@ -91,6 +92,6 @@ case class CreateTableAsSelect( } override def argString: String = { - s"[Database:$database, TableName: $tableName, InsertIntoHiveTable]\n" + query.toString + s"[AllowExisting: $allowExisting, HiveTable: $tableDesc]" } } 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 697211222b90c..b7dea767c0dd2 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 @@ -46,13 +46,18 @@ class HiveExplainSuite extends QueryTest { "Limit", "src") - checkExistence(sql("explain extended create table temp__b as select * from src limit 2"), true, + checkExistence( + sql("explain extended create table temp__b as select key, 1+4 from src limit 2"), true, "== Parsed Logical Plan ==", "== Analyzed Logical Plan ==", "== Optimized Logical Plan ==", "== Physical Plan ==", "CreateTableAsSelect", "InsertIntoHiveTable", + "Project [unresolvedalias('key),unresolvedalias((1 + 4))", // parsed plan + "(1 + 4) AS", // analyzed plan + "5 AS", // optimized plan + "ExecutedCommand [cmd:CreateTableAsSelect [", // physical plan "Limit", "src") From 8dc37e9ecdaef4f0816e3169e02b98feb097314c Mon Sep 17 00:00:00 2001 From: Cheng Hao Date: Thu, 6 Aug 2015 15:00:27 +0800 Subject: [PATCH 2/2] fix bug in unit test --- .../sql/hive/execution/HiveExplainSuite.scala | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) 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 b7dea767c0dd2..95ea29d6b9012 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 @@ -42,24 +42,19 @@ class HiveExplainSuite extends QueryTest { test("explain create table command") { checkExistence(sql("explain create table temp__b as select * from src limit 2"), true, "== Physical Plan ==", - "InsertIntoHiveTable", + "ExecutedCommand [cmd:CreateTableAsSelect [", "Limit", "src") checkExistence( - sql("explain extended create table temp__b as select key, 1+4 from src limit 2"), true, + sql("explain create table temp__b as select *, 1+4 from src limit 2"), false, "== Parsed Logical Plan ==", "== Analyzed Logical Plan ==", "== Optimized Logical Plan ==", - "== Physical Plan ==", - "CreateTableAsSelect", - "InsertIntoHiveTable", - "Project [unresolvedalias('key),unresolvedalias((1 + 4))", // parsed plan - "(1 + 4) AS", // analyzed plan - "5 AS", // optimized plan - "ExecutedCommand [cmd:CreateTableAsSelect [", // physical plan - "Limit", - "src") + "unresolvedalias(*)", // parsed plan + "unresolvedalias((1 + 4))", // parsed plan + "(1 + 4) AS") // analyzed plan + checkExistence(sql( """ @@ -68,15 +63,24 @@ class HiveExplainSuite extends QueryTest { | WITH SERDEPROPERTIES("serde_p1"="p1","serde_p2"="p2") | STORED AS RCFile | TBLPROPERTIES("tbl_p1"="p11", "tbl_p2"="p22") - | AS SELECT * FROM src LIMIT 2 + | AS SELECT *, 4+1 FROM src LIMIT 2 """.stripMargin), true, "== Parsed Logical Plan ==", "== Analyzed Logical Plan ==", "== Optimized Logical Plan ==", "== Physical Plan ==", "CreateTableAsSelect", - "InsertIntoHiveTable", + "HiveTable", "Limit", + "Map(tbl_p1 -> p11, tbl_p2 -> p22)", + "Map(serde_p1 -> p1, serde_p2 -> p2)", + "unresolvedalias(*)", // parsed logical plan + "unresolvedalias((4 + 1))", // parsed logical plan + "(4 + 1) AS", // analyzed logical plan + "key", // analyzed logical plan + "value", // analyzed logical plan + "5 AS", // optimized logical plan + "ExecutedCommand [cmd:", // pyhsical plan "src") } }