From b5bae849dbdf833a80746b705732b8c86971fddc Mon Sep 17 00:00:00 2001
From: Michael Armbrust <michael@databricks.com>
Date: Mon, 7 Apr 2014 01:46:50 -0700
Subject: [PATCH] [SQL] SPARK-1427 Fix toString for SchemaRDD NativeCommands.

Author: Michael Armbrust <michael@databricks.com>

Closes #343 from marmbrus/toStringFix and squashes the following commits:

37198fe [Michael Armbrust] Fix toString for SchemaRDD NativeCommands.
---
 .../src/main/scala/org/apache/spark/sql/SQLContext.scala    | 2 ++
 .../src/main/scala/org/apache/spark/sql/SchemaRDDLike.scala | 3 +--
 .../main/scala/org/apache/spark/sql/hive/HiveContext.scala  | 6 ++++++
 .../apache/spark/sql/hive/execution/HiveQuerySuite.scala    | 4 ++++
 4 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/sql/core/src/main/scala/org/apache/spark/sql/SQLContext.scala b/sql/core/src/main/scala/org/apache/spark/sql/SQLContext.scala
index 36059c6630..3193787680 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/SQLContext.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/SQLContext.scala
@@ -224,6 +224,8 @@ class SQLContext(@transient val sparkContext: SparkContext)
     protected def stringOrError[A](f: => A): String =
       try f.toString catch { case e: Throwable => e.toString }
 
+    def simpleString: String = stringOrError(executedPlan)
+
     override def toString: String =
       s"""== Logical Plan ==
          |${stringOrError(analyzed)}
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/SchemaRDDLike.scala b/sql/core/src/main/scala/org/apache/spark/sql/SchemaRDDLike.scala
index 840803a52c..3dd9897c0d 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/SchemaRDDLike.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/SchemaRDDLike.scala
@@ -41,8 +41,7 @@ trait SchemaRDDLike {
   override def toString =
     s"""${super.toString}
        |== Query Plan ==
-       |${queryExecution.executedPlan}""".stripMargin.trim
-
+       |${queryExecution.simpleString}""".stripMargin.trim
 
   /**
    * Saves the contents of this `SchemaRDD` as a parquet file, preserving the schema.  Files that
diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveContext.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveContext.scala
index f66a667c0a..353458432b 100644
--- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveContext.scala
+++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveContext.scala
@@ -297,5 +297,11 @@ class HiveContext(sc: SparkContext) extends SQLContext(sc) {
         val asString = result.map(_.zip(types).map(toHiveString)).map(_.mkString("\t")).toSeq
         asString
     }
+
+    override def simpleString: String =
+      logical match {
+        case _: NativeCommand => "<Executed by Hive>"
+        case _ => executedPlan.toString
+      }
   }
 }
diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala
index 0c27498a93..a09667ac84 100644
--- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala
+++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala
@@ -146,4 +146,8 @@ class HiveQuerySuite extends HiveComparisonTest {
     hql("SELECT * FROM src TABLESAMPLE(0.1 PERCENT) s")
   }
 
+  test("SchemaRDD toString") {
+    hql("SHOW TABLES").toString
+    hql("SELECT * FROM src").toString
+  }
 }
-- 
GitLab