aboutsummaryrefslogtreecommitdiff
path: root/sql/catalyst
diff options
context:
space:
mode:
Diffstat (limited to 'sql/catalyst')
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/types/DataType.scala3
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/types/StructType.scala17
2 files changed, 20 insertions, 0 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DataType.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DataType.scala
index 4b54c31dcc..b0c43c4100 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DataType.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DataType.scala
@@ -66,6 +66,9 @@ abstract class DataType extends AbstractDataType {
/** Readable string representation for the type. */
def simpleString: String = typeName
+ /** Readable string representation for the type with truncation */
+ private[sql] def simpleString(maxNumberFields: Int): String = simpleString
+
/**
* Check if `this` and `other` are the same data type when ignoring nullability
* (`StructField.nullable`, `ArrayType.containsNull`, and `MapType.valueContainsNull`).
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/StructType.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/StructType.scala
index 9778df271d..d568022765 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/StructType.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/StructType.scala
@@ -278,6 +278,23 @@ case class StructType(fields: Array[StructField]) extends DataType with Seq[Stru
s"struct<${fieldTypes.mkString(",")}>"
}
+ private[sql] override def simpleString(maxNumberFields: Int): String = {
+ val builder = new StringBuilder
+ val fieldTypes = fields.take(maxNumberFields).map {
+ case f => s"${f.name}: ${f.dataType.simpleString(maxNumberFields)}"
+ }
+ builder.append("struct<")
+ builder.append(fieldTypes.mkString(", "))
+ if (fields.length > 2) {
+ if (fields.length - fieldTypes.size == 1) {
+ builder.append(" ... 1 more field")
+ } else {
+ builder.append(" ... " + (fields.length - 2) + " more fields")
+ }
+ }
+ builder.append(">").toString()
+ }
+
/**
* Merges with another schema (`StructType`). For a struct field A from `this` and a struct field
* B from `that`,