Repository: spark Updated Branches: refs/heads/master 408e64b28 -> cb8c241f0
[SPARK-9200][SQL] Don't implicitly cast non-atomic types to string type. Author: Reynold Xin <[email protected]> Closes #7636 from rxin/complex-string-implicit-cast and squashes the following commits: 3e67327 [Reynold Xin] [SPARK-9200][SQL] Don't implicitly cast non-atomic types to string type. Project: http://git-wip-us.apache.org/repos/asf/spark/repo Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/cb8c241f Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/cb8c241f Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/cb8c241f Branch: refs/heads/master Commit: cb8c241f05b9ab4ad0cd07df14d454cc5a4554cc Parents: 408e64b Author: Reynold Xin <[email protected]> Authored: Fri Jul 24 01:18:43 2015 -0700 Committer: Reynold Xin <[email protected]> Committed: Fri Jul 24 01:18:43 2015 -0700 ---------------------------------------------------------------------- .../spark/sql/catalyst/analysis/HiveTypeCoercion.scala | 3 ++- .../spark/sql/catalyst/analysis/HiveTypeCoercionSuite.scala | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/spark/blob/cb8c241f/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/HiveTypeCoercion.scala ---------------------------------------------------------------------- diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/HiveTypeCoercion.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/HiveTypeCoercion.scala index d56ceea..87ffbfe 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/HiveTypeCoercion.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/HiveTypeCoercion.scala @@ -720,7 +720,8 @@ object HiveTypeCoercion { case (StringType, DateType) => Cast(e, DateType) case (StringType, TimestampType) => Cast(e, TimestampType) case (StringType, BinaryType) => Cast(e, BinaryType) - case (any, StringType) if any != StringType => Cast(e, StringType) + // Cast any atomic type to string. + case (any: AtomicType, StringType) if any != StringType => Cast(e, StringType) // When we reach here, input type is not acceptable for any types in this type collection, // try to find the first one we can implicitly cast. http://git-wip-us.apache.org/repos/asf/spark/blob/cb8c241f/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/HiveTypeCoercionSuite.scala ---------------------------------------------------------------------- diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/HiveTypeCoercionSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/HiveTypeCoercionSuite.scala index d0fb95b..55865bd 100644 --- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/HiveTypeCoercionSuite.scala +++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/HiveTypeCoercionSuite.scala @@ -115,6 +115,14 @@ class HiveTypeCoercionSuite extends PlanTest { shouldNotCast(IntegerType, ArrayType) shouldNotCast(IntegerType, MapType) shouldNotCast(IntegerType, StructType) + + shouldNotCast(IntervalType, StringType) + + // Don't implicitly cast complex types to string. + shouldNotCast(ArrayType(StringType), StringType) + shouldNotCast(MapType(StringType, StringType), StringType) + shouldNotCast(new StructType().add("a1", StringType), StringType) + shouldNotCast(MapType(StringType, StringType), StringType) } test("tightest common bound for types") { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
