You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by do...@apache.org on 2019/04/22 20:02:29 UTC

[spark] branch master updated: [SPARK-27531][SQL] Improve `EXPLAIN DESC TABLE` to show the input parameters of the command.

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 3240e52  [SPARK-27531][SQL] Improve `EXPLAIN DESC TABLE` to show the input parameters of the command.
3240e52 is described below

commit 3240e52dc792fe434c2d29ee2eefc63fba631dd8
Author: Dilip Biswal <db...@us.ibm.com>
AuthorDate: Mon Apr 22 13:02:10 2019 -0700

    [SPARK-27531][SQL] Improve `EXPLAIN DESC TABLE` to show the input parameters of the command.
    
    ## What changes were proposed in this pull request?
    Currently "EXPLAIN DESC TABLE" is special cased and outputs a single row relation as following.
    Current output:
    ```sql
    spark-sql> EXPLAIN DESCRIBE TABLE t;
    == Physical Plan ==
    *(1) Scan OneRowRelation[]
    ```
    This is not consistent with how we handle explain processing for other commands. In this PR, the inconsistency is handled by removing the special handling for "describe table".
    
    After change:
    ```sql
    spark-sql> EXPLAIN DESC EXTENDED t
    == Physical Plan ==
    Execute DescribeTableCommand
       +- DescribeTableCommand `t`, true
    ```
    ## How was this patch tested?
    Added new tests in SQLQueryTestSuite.
    
    Closes #24427 from dilipbiswal/describe_table_explain2.
    
    Authored-by: Dilip Biswal <db...@us.ibm.com>
    Signed-off-by: Dongjoon Hyun <dh...@apple.com>
---
 .../spark/sql/execution/SparkSqlParser.scala       | 12 +---
 .../test/resources/sql-tests/inputs/describe.sql   |  7 ++
 .../resources/sql-tests/results/describe.sql.out   | 82 +++++++++++++++++++---
 3 files changed, 79 insertions(+), 22 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 bfb50be..96af8b3 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
@@ -318,26 +318,16 @@ class SparkSqlAstBuilder(conf: SQLConf) extends AstBuilder(conf) {
     val statement = plan(ctx.statement)
     if (statement == null) {
       null  // This is enough since ParseException will raise later.
-    } else if (isExplainableStatement(statement)) {
+    } else {
       ExplainCommand(
         logicalPlan = statement,
         extended = ctx.EXTENDED != null,
         codegen = ctx.CODEGEN != null,
         cost = ctx.COST != null)
-    } else {
-      ExplainCommand(OneRowRelation())
     }
   }
 
   /**
-   * Determine if a plan should be explained at all.
-   */
-  protected def isExplainableStatement(plan: LogicalPlan): Boolean = plan match {
-    case _: DescribeTableCommand => false
-    case _ => true
-  }
-
-  /**
    * Create a [[DescribeColumnCommand]] or [[DescribeTableCommand]] logical commands.
    */
   override def visitDescribeTable(ctx: DescribeTableContext): LogicalPlan = withOrigin(ctx) {
diff --git a/sql/core/src/test/resources/sql-tests/inputs/describe.sql b/sql/core/src/test/resources/sql-tests/inputs/describe.sql
index f26d5ef..a0ee932 100644
--- a/sql/core/src/test/resources/sql-tests/inputs/describe.sql
+++ b/sql/core/src/test/resources/sql-tests/inputs/describe.sql
@@ -80,6 +80,13 @@ DESC EXTENDED v;
 -- AnalysisException DESC PARTITION is not allowed on a view
 DESC v PARTITION (c='Us', d=1);
 
+-- Explain Describe Table
+EXPLAIN DESC t;
+EXPLAIN DESC EXTENDED t;
+EXPLAIN EXTENDED DESC t;
+EXPLAIN DESCRIBE t b;
+EXPLAIN DESCRIBE t PARTITION (c='Us', d=2);
+
 -- DROP TEST TABLES/VIEWS
 DROP TABLE t;
 
diff --git a/sql/core/src/test/resources/sql-tests/results/describe.sql.out b/sql/core/src/test/resources/sql-tests/results/describe.sql.out
index 9c4b70d..46d9ec3 100644
--- a/sql/core/src/test/resources/sql-tests/results/describe.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/describe.sql.out
@@ -1,5 +1,5 @@
 -- Automatically generated by SQLQueryTestSuite
--- Number of queries: 36
+-- Number of queries: 41
 
 
 -- !query 0
@@ -514,32 +514,92 @@ DESC PARTITION is not allowed on a view: v;
 
 
 -- !query 32
-DROP TABLE t
+EXPLAIN DESC t
 -- !query 32 schema
-struct<>
+struct<plan:string>
 -- !query 32 output
-
+== Physical Plan ==
+Execute DescribeTableCommand
+   +- DescribeTableCommand `t`, false
 
 
 -- !query 33
-DROP VIEW temp_v
+EXPLAIN DESC EXTENDED t
 -- !query 33 schema
-struct<>
+struct<plan:string>
 -- !query 33 output
-
+== Physical Plan ==
+Execute DescribeTableCommand
+   +- DescribeTableCommand `t`, true
 
 
 -- !query 34
-DROP VIEW temp_Data_Source_View
+EXPLAIN EXTENDED DESC t
 -- !query 34 schema
-struct<>
+struct<plan:string>
 -- !query 34 output
+== Parsed Logical Plan ==
+DescribeTableCommand `t`, false
+
+== Analyzed Logical Plan ==
+col_name: string, data_type: string, comment: string
+DescribeTableCommand `t`, false
 
+== Optimized Logical Plan ==
+DescribeTableCommand `t`, false
+
+== Physical Plan ==
+Execute DescribeTableCommand
+   +- DescribeTableCommand `t`, false
 
 
 -- !query 35
-DROP VIEW v
+EXPLAIN DESCRIBE t b
 -- !query 35 schema
-struct<>
+struct<plan:string>
 -- !query 35 output
+== Physical Plan ==
+Execute DescribeColumnCommand
+   +- DescribeColumnCommand `t`, [b], false
+
+
+-- !query 36
+EXPLAIN DESCRIBE t PARTITION (c='Us', d=2)
+-- !query 36 schema
+struct<plan:string>
+-- !query 36 output
+== Physical Plan ==
+Execute DescribeTableCommand
+   +- DescribeTableCommand `t`, Map(c -> Us, d -> 2), false
+
+
+-- !query 37
+DROP TABLE t
+-- !query 37 schema
+struct<>
+-- !query 37 output
+
+
+
+-- !query 38
+DROP VIEW temp_v
+-- !query 38 schema
+struct<>
+-- !query 38 output
+
+
+
+-- !query 39
+DROP VIEW temp_Data_Source_View
+-- !query 39 schema
+struct<>
+-- !query 39 output
+
+
+
+-- !query 40
+DROP VIEW v
+-- !query 40 schema
+struct<>
+-- !query 40 output
 


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