You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by gu...@apache.org on 2020/03/24 05:12:49 UTC
[spark] branch branch-3.0 updated: [SPARK-31229][SQL][TESTS] Add
unit tests TypeCoercion.findTypeForComplex and Cast.canCast in null <>
complex types
This is an automated email from the ASF dual-hosted git repository.
gurwls223 pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/branch-3.0 by this push:
new dad4d6a [SPARK-31229][SQL][TESTS] Add unit tests TypeCoercion.findTypeForComplex and Cast.canCast in null <> complex types
dad4d6a is described below
commit dad4d6af0146bd76e4c80d12dac0735a03afd303
Author: HyukjinKwon <gu...@apache.org>
AuthorDate: Tue Mar 24 14:10:59 2020 +0900
[SPARK-31229][SQL][TESTS] Add unit tests TypeCoercion.findTypeForComplex and Cast.canCast in null <> complex types
### What changes were proposed in this pull request?
This PR (SPARK-31229) is rather a followup of https://github.com/apache/spark/pull/27926 (SPARK-31166). It adds unittests for `TypeCoercion.findTypeForComplex` and `Cast.canCast` about struct, map and array with the respect to null types.
### Why are the changes needed?
To detect which scope was broken in the future easily.
### Does this PR introduce any user-facing change?
No, it's a test-only.
### How was this patch tested?
Unittests were added.
Closes #27990 from HyukjinKwon/SPARK-31166-followup.
Authored-by: HyukjinKwon <gu...@apache.org>
Signed-off-by: HyukjinKwon <gu...@apache.org>
(cherry picked from commit bd324007d51b5dce4a4520fee21412a1587e08b6)
Signed-off-by: HyukjinKwon <gu...@apache.org>
---
.../sql/catalyst/analysis/TypeCoercionSuite.scala | 18 ++++++++++++++++++
.../spark/sql/catalyst/expressions/CastSuite.scala | 17 +++++++++++++++++
2 files changed, 35 insertions(+)
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/TypeCoercionSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/TypeCoercionSuite.scala
index 0d6f9bc..95005fd 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/TypeCoercionSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/TypeCoercionSuite.scala
@@ -468,17 +468,35 @@ class TypeCoercionSuite extends AnalysisTest {
Some(ArrayType(IntegerType, containsNull = true)))
widenTest(
+ ArrayType(NullType, containsNull = true),
+ ArrayType(IntegerType, containsNull = false),
+ Some(ArrayType(IntegerType, containsNull = true)))
+
+ widenTest(
MapType(IntegerType, StringType, valueContainsNull = true),
MapType(IntegerType, StringType, valueContainsNull = false),
Some(MapType(IntegerType, StringType, valueContainsNull = true)))
widenTest(
+ MapType(NullType, NullType, true),
+ MapType(IntegerType, StringType, false),
+ Some(MapType(IntegerType, StringType, true)))
+
+ widenTest(
new StructType()
.add("arr", ArrayType(IntegerType, containsNull = true), nullable = false),
new StructType()
.add("arr", ArrayType(IntegerType, containsNull = false), nullable = true),
Some(new StructType()
.add("arr", ArrayType(IntegerType, containsNull = true), nullable = true)))
+
+ widenTest(
+ new StructType()
+ .add("null", NullType, nullable = true),
+ new StructType()
+ .add("null", IntegerType, nullable = false),
+ Some(new StructType()
+ .add("null", IntegerType, nullable = true)))
}
test("wider common type for decimal and array") {
diff --git a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/CastSuite.scala b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/CastSuite.scala
index 9d20eac..e5e28b6 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/CastSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/CastSuite.scala
@@ -1140,6 +1140,23 @@ class CastSuite extends CastSuiteBase {
assert(Cast.canCast(set.dataType, ArrayType(StringType, false)))
}
+ test("NullTypes should be able to cast to any complex types") {
+ assert(Cast.canCast(ArrayType(NullType, true), ArrayType(IntegerType, true)))
+ assert(Cast.canCast(ArrayType(NullType, false), ArrayType(IntegerType, true)))
+
+ assert(Cast.canCast(
+ MapType(NullType, NullType, true), MapType(IntegerType, IntegerType, true)))
+ assert(Cast.canCast(
+ MapType(NullType, NullType, false), MapType(IntegerType, IntegerType, true)))
+
+ assert(Cast.canCast(
+ StructType(StructField("a", NullType, true) :: Nil),
+ StructType(StructField("a", IntegerType, true) :: Nil)))
+ assert(Cast.canCast(
+ StructType(StructField("a", NullType, false) :: Nil),
+ StructType(StructField("a", IntegerType, true) :: Nil)))
+ }
+
test("Cast should output null for invalid strings when ANSI is not enabled.") {
withSQLConf(SQLConf.ANSI_ENABLED.key -> "false") {
checkEvaluation(cast("abdef", DecimalType.USER_DEFAULT), null)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org