This is an automated email from the ASF dual-hosted git repository.

dongjoon pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git


The following commit(s) were added to refs/heads/master by this push:
     new 8a8643c  [SPARK-27480][SQL] Improve `EXPLAIN DESC QUERY` to show the 
input SQL statement
8a8643c is described below

commit 8a8643c28dd0416e226894ebacf36c7edb547081
Author: Dilip Biswal <dbis...@us.ibm.com>
AuthorDate: Sun Apr 21 15:34:16 2019 -0700

    [SPARK-27480][SQL] Improve `EXPLAIN DESC QUERY` to show the input SQL 
statement
    
    Currently running explain on describe query gives a little confusing 
output. This is a minor pr that improves the output of explain.
    
    Before
    ```
    1.EXPLAIN DESCRIBE WITH s AS (SELECT 'hello' as col1) SELECT * FROM s;
    == Physical Plan ==
    Execute DescribeQueryCommand
       +- DescribeQueryCommand CTE [s]
    2.EXPLAIN EXTENDED DESCRIBE SELECT * from s1 where c1 > 0;
    == Physical Plan ==
    Execute DescribeQueryCommand
       +- DescribeQueryCommand 'Project [*]
    ```
    After
    ```
    1. EXPLAIN DESCRIBE WITH s AS (SELECT 'hello' as col1) SELECT * FROM s;
    == Physical Plan ==
    Execute DescribeQueryCommand
       +- DescribeQueryCommand WITH s AS (SELECT 'hello' as col1) SELECT * FROM 
s
    2. EXPLAIN DESCRIBE SELECT * from s1 where c1 > 0;
    == Physical Plan ==
    Execute DescribeQueryCommand
       +- DescribeQueryCommand SELECT * from s1 where c1 > 0
    ```
    Added a couple of tests in describe-query.sql under SQLQueryTestSuite.
    
    Closes #24385 from dilipbiswal/describe_query_explain.
    
    Authored-by: Dilip Biswal <dbis...@us.ibm.com>
    Signed-off-by: Dongjoon Hyun <dh...@apple.com>
---
 .../spark/sql/execution/SparkSqlParser.scala       |  2 +-
 .../spark/sql/execution/command/tables.scala       |  6 ++--
 .../resources/sql-tests/inputs/describe-query.sql  |  4 +++
 .../sql-tests/results/describe-query.sql.out       | 42 ++++++++++++++++++----
 .../spark/sql/execution/SparkSqlParserSuite.scala  |  4 +--
 5 files changed, 47 insertions(+), 11 deletions(-)

diff --git 
a/sql/core/src/main/scala/org/apache/spark/sql/execution/SparkSqlParser.scala 
b/sql/core/src/main/scala/org/apache/spark/sql/execution/SparkSqlParser.scala
index 2c20b53..bfb50be 100644
--- 
a/sql/core/src/main/scala/org/apache/spark/sql/execution/SparkSqlParser.scala
+++ 
b/sql/core/src/main/scala/org/apache/spark/sql/execution/SparkSqlParser.scala
@@ -373,7 +373,7 @@ class SparkSqlAstBuilder(conf: SQLConf) extends 
AstBuilder(conf) {
    * Create a [[DescribeQueryCommand]] logical command.
    */
   override def visitDescribeQuery(ctx: DescribeQueryContext): LogicalPlan = 
withOrigin(ctx) {
-    DescribeQueryCommand(visitQuery(ctx.query))
+    DescribeQueryCommand(source(ctx.query), visitQuery(ctx.query))
   }
 
   /**
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 b31b2d3..395d61b 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
@@ -639,12 +639,14 @@ case class DescribeTableCommand(
  *    select * from (from a select * select *)
  * 7. Common table expressions (CTEs)
  */
-case class DescribeQueryCommand(query: LogicalPlan)
+case class DescribeQueryCommand(queryText: String, plan: LogicalPlan)
   extends DescribeCommandBase {
 
+  override def simpleString(maxFields: Int): String = s"$nodeName 
$queryText".trim
+
   override def run(sparkSession: SparkSession): Seq[Row] = {
     val result = new ArrayBuffer[Row]
-    val queryExecution = sparkSession.sessionState.executePlan(query)
+    val queryExecution = sparkSession.sessionState.executePlan(plan)
     describeSchema(queryExecution.analyzed.schema, result, header = false)
     result
   }
diff --git a/sql/core/src/test/resources/sql-tests/inputs/describe-query.sql 
b/sql/core/src/test/resources/sql-tests/inputs/describe-query.sql
index b6351f9..f8fbb43 100644
--- a/sql/core/src/test/resources/sql-tests/inputs/describe-query.sql
+++ b/sql/core/src/test/resources/sql-tests/inputs/describe-query.sql
@@ -22,6 +22,10 @@ DESCRIBE
      insert into desc_temp1 select *
      insert into desc_temp2 select *;
 
+-- Explain
+EXPLAIN DESC QUERY SELECT * FROM desc_temp2 WHERE key > 0;
+EXPLAIN EXTENDED DESC WITH s AS (SELECT 'hello' as col1) SELECT * FROM s;
+
 -- cleanup
 DROP TABLE desc_temp1;
 DROP TABLE desc_temp2;
diff --git 
a/sql/core/src/test/resources/sql-tests/results/describe-query.sql.out 
b/sql/core/src/test/resources/sql-tests/results/describe-query.sql.out
index 15a346f..9c65e54 100644
--- a/sql/core/src/test/resources/sql-tests/results/describe-query.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/describe-query.sql.out
@@ -1,5 +1,5 @@
 -- Automatically generated by SQLQueryTestSuite
--- Number of queries: 17
+-- Number of queries: 19
 
 
 -- !query 0
@@ -154,16 +154,46 @@ DESCRIBE
 
 
 -- !query 15
-DROP TABLE desc_temp1
+EXPLAIN DESC QUERY SELECT * FROM desc_temp2 WHERE key > 0
 -- !query 15 schema
-struct<>
+struct<plan:string>
 -- !query 15 output
-
+== Physical Plan ==
+Execute DescribeQueryCommand
+   +- DescribeQueryCommand SELECT * FROM desc_temp2 WHERE key > 0
 
 
 -- !query 16
-DROP TABLE desc_temp2
+EXPLAIN EXTENDED DESC WITH s AS (SELECT 'hello' as col1) SELECT * FROM s
 -- !query 16 schema
-struct<>
+struct<plan:string>
 -- !query 16 output
+== Parsed Logical Plan ==
+DescribeQueryCommand WITH s AS (SELECT 'hello' as col1) SELECT * FROM s
+
+== Analyzed Logical Plan ==
+col_name: string, data_type: string, comment: string
+DescribeQueryCommand WITH s AS (SELECT 'hello' as col1) SELECT * FROM s
+
+== Optimized Logical Plan ==
+DescribeQueryCommand WITH s AS (SELECT 'hello' as col1) SELECT * FROM s
+
+== Physical Plan ==
+Execute DescribeQueryCommand
+   +- DescribeQueryCommand WITH s AS (SELECT 'hello' as col1) SELECT * FROM s
+
+
+-- !query 17
+DROP TABLE desc_temp1
+-- !query 17 schema
+struct<>
+-- !query 17 output
+
+
+
+-- !query 18
+DROP TABLE desc_temp2
+-- !query 18 schema
+struct<>
+-- !query 18 output
 
diff --git 
a/sql/core/src/test/scala/org/apache/spark/sql/execution/SparkSqlParserSuite.scala
 
b/sql/core/src/test/scala/org/apache/spark/sql/execution/SparkSqlParserSuite.scala
index fd60779..c293ce3 100644
--- 
a/sql/core/src/test/scala/org/apache/spark/sql/execution/SparkSqlParserSuite.scala
+++ 
b/sql/core/src/test/scala/org/apache/spark/sql/execution/SparkSqlParserSuite.scala
@@ -228,8 +228,8 @@ class SparkSqlParserSuite extends AnalysisTest {
 
   test("describe query") {
     val query = "SELECT * FROM t"
-    assertEqual("DESCRIBE QUERY " + query, 
DescribeQueryCommand(parser.parsePlan(query)))
-    assertEqual("DESCRIBE " + query, 
DescribeQueryCommand(parser.parsePlan(query)))
+    assertEqual("DESCRIBE QUERY " + query, DescribeQueryCommand(query, 
parser.parsePlan(query)))
+    assertEqual("DESCRIBE " + query, DescribeQueryCommand(query, 
parser.parsePlan(query)))
   }
 
   test("describe table column") {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org
For additional commands, e-mail: commits-h...@spark.apache.org

Reply via email to