Repository: spark
Updated Branches:
  refs/heads/master cb6cb3136 -> 8c13cb2ae


[SPARK-25031][SQL] Fix MapType schema print

## What changes were proposed in this pull request?

The PR fix the bug in `buildFormattedString` function in `MapType`, which makes 
the printed schema misleading.

## How was this patch tested?

Added UT

Closes #22006 from invkrh/fix-map-schema-print.

Authored-by: invkrh <inv...@gmail.com>
Signed-off-by: Xiao Li <gatorsm...@gmail.com>


Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/8c13cb2a
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/8c13cb2a
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/8c13cb2a

Branch: refs/heads/master
Commit: 8c13cb2ae4f82c0eb04939a667310b9268b1c2a7
Parents: cb6cb31
Author: invkrh <inv...@gmail.com>
Authored: Tue Aug 7 11:04:37 2018 -0700
Committer: Xiao Li <gatorsm...@gmail.com>
Committed: Tue Aug 7 11:04:37 2018 -0700

----------------------------------------------------------------------
 .../org/apache/spark/sql/types/MapType.scala    |  2 +-
 .../apache/spark/sql/types/DataTypeSuite.scala  | 26 ++++++++++++++++++++
 2 files changed, 27 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/spark/blob/8c13cb2a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/MapType.scala
----------------------------------------------------------------------
diff --git 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/MapType.scala 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/MapType.scala
index 6691b81..594e155 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/MapType.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/MapType.scala
@@ -42,9 +42,9 @@ case class MapType(
 
   private[sql] def buildFormattedString(prefix: String, builder: 
StringBuilder): Unit = {
     builder.append(s"$prefix-- key: ${keyType.typeName}\n")
+    DataType.buildFormattedString(keyType, s"$prefix    |", builder)
     builder.append(s"$prefix-- value: ${valueType.typeName} " +
       s"(valueContainsNull = $valueContainsNull)\n")
-    DataType.buildFormattedString(keyType, s"$prefix    |", builder)
     DataType.buildFormattedString(valueType, s"$prefix    |", builder)
   }
 

http://git-wip-us.apache.org/repos/asf/spark/blob/8c13cb2a/sql/catalyst/src/test/scala/org/apache/spark/sql/types/DataTypeSuite.scala
----------------------------------------------------------------------
diff --git 
a/sql/catalyst/src/test/scala/org/apache/spark/sql/types/DataTypeSuite.scala 
b/sql/catalyst/src/test/scala/org/apache/spark/sql/types/DataTypeSuite.scala
index fccd057..122a312 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/types/DataTypeSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/types/DataTypeSuite.scala
@@ -452,4 +452,30 @@ class DataTypeSuite extends SparkFunSuite {
     new StructType().add("f1", IntegerType).add("f", new 
StructType().add("f2", StringType, false)),
     new StructType().add("f2", IntegerType).add("g", new 
StructType().add("f1", StringType)),
     false)
+
+  test("SPARK-25031: MapType should produce current formatted string for 
complex types") {
+    val keyType: DataType = StructType(Seq(
+      StructField("a", DataTypes.IntegerType),
+      StructField("b", DataTypes.IntegerType)))
+
+    val valueType: DataType = StructType(Seq(
+      StructField("c", DataTypes.IntegerType),
+      StructField("d", DataTypes.IntegerType)))
+
+    val builder = new StringBuilder
+
+    MapType(keyType, valueType).buildFormattedString(prefix = "", builder = 
builder)
+
+    val result = builder.toString()
+    val expected =
+      """-- key: struct
+        |    |-- a: integer (nullable = true)
+        |    |-- b: integer (nullable = true)
+        |-- value: struct (valueContainsNull = true)
+        |    |-- c: integer (nullable = true)
+        |    |-- d: integer (nullable = true)
+        |""".stripMargin
+
+    assert(result === expected)
+  }
 }


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

Reply via email to