You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by rx...@apache.org on 2016/07/07 18:08:09 UTC
spark git commit: [SPARK-16415][SQL] fix catalog string error
Repository: spark
Updated Branches:
refs/heads/master 0f7175def -> 28710b42b
[SPARK-16415][SQL] fix catalog string error
## What changes were proposed in this pull request?
In #13537 we truncate `simpleString` if it is a long `StructType`. But sometimes we need `catalogString` to reconstruct `TypeInfo`, for example in description of [SPARK-16415 ](https://issues.apache.org/jira/browse/SPARK-16415). So we need to keep the implementation of `catalogString` not affected by our truncate.
## How was this patch tested?
added a test case.
Author: Daoyuan Wang <da...@intel.com>
Closes #14089 from adrian-wang/catalogstring.
Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/28710b42
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/28710b42
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/28710b42
Branch: refs/heads/master
Commit: 28710b42b0d18a55bd64d597558649537259b127
Parents: 0f7175d
Author: Daoyuan Wang <da...@intel.com>
Authored: Thu Jul 7 11:08:06 2016 -0700
Committer: Reynold Xin <rx...@databricks.com>
Committed: Thu Jul 7 11:08:06 2016 -0700
----------------------------------------------------------------------
.../scala/org/apache/spark/sql/types/StructType.scala | 6 ++++++
.../spark/sql/hive/HiveMetastoreCatalogSuite.scala | 14 +++++++++++---
2 files changed, 17 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/spark/blob/28710b42/sql/catalyst/src/main/scala/org/apache/spark/sql/types/StructType.scala
----------------------------------------------------------------------
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 0c2ebb0..dd4c88c 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
@@ -333,6 +333,12 @@ case class StructType(fields: Array[StructField]) extends DataType with Seq[Stru
Utils.truncatedString(fieldTypes, "struct<", ",", ">")
}
+ override def catalogString: String = {
+ // in catalogString, we should not truncate
+ val fieldTypes = fields.map(field => s"${field.name}:${field.dataType.catalogString}")
+ s"struct<${fieldTypes.mkString(",")}>"
+ }
+
override def sql: String = {
val fieldTypes = fields.map(f => s"${quoteIdentifier(f.name)}: ${f.dataType.sql}")
s"STRUCT<${fieldTypes.mkString(", ")}>"
http://git-wip-us.apache.org/repos/asf/spark/blob/28710b42/sql/hive/src/test/scala/org/apache/spark/sql/hive/HiveMetastoreCatalogSuite.scala
----------------------------------------------------------------------
diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/HiveMetastoreCatalogSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/HiveMetastoreCatalogSuite.scala
index b420781..754aabb 100644
--- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/HiveMetastoreCatalogSuite.scala
+++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/HiveMetastoreCatalogSuite.scala
@@ -26,15 +26,15 @@ import org.apache.spark.sql.catalyst.parser.CatalystSqlParser
import org.apache.spark.sql.hive.test.TestHiveSingleton
import org.apache.spark.sql.internal.SQLConf
import org.apache.spark.sql.test.{ExamplePointUDT, SQLTestUtils}
-import org.apache.spark.sql.types.{DecimalType, StringType, StructType}
+import org.apache.spark.sql.types.{DecimalType, StringType, StructField, StructType}
class HiveMetastoreCatalogSuite extends TestHiveSingleton {
import spark.implicits._
test("struct field should accept underscore in sub-column name") {
val hiveTypeStr = "struct<a: int, b_1: string, c: string>"
- val dateType = CatalystSqlParser.parseDataType(hiveTypeStr)
- assert(dateType.isInstanceOf[StructType])
+ val dataType = CatalystSqlParser.parseDataType(hiveTypeStr)
+ assert(dataType.isInstanceOf[StructType])
}
test("udt to metastore type conversion") {
@@ -49,6 +49,14 @@ class HiveMetastoreCatalogSuite extends TestHiveSingleton {
logInfo(df.queryExecution.toString)
df.as('a).join(df.as('b), $"a.key" === $"b.key")
}
+
+ test("should not truncate struct type catalog string") {
+ def field(n: Int): StructField = {
+ StructField("col" + n, StringType)
+ }
+ val dataType = StructType((1 to 100).map(field))
+ assert(CatalystSqlParser.parseDataType(dataType.catalogString) == dataType)
+ }
}
class DataSourceWithHiveMetastoreCatalogSuite
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org