HyukjinKwon commented on a change in pull request #27991: [SPARK-31227][SQL]
Non-nullable null type in complex types should not coerce to nullable type
URL: https://github.com/apache/spark/pull/27991#discussion_r396846466
##########
File path:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Cast.scala
##########
@@ -210,8 +206,13 @@ object Cast {
case _ => false // overflow
}
+ /**
+ * Returns `true` iif it should change the nullability of this type in the
container,
+ * e.g. map type, array type, expression, etc. This function should take the
nullability
+ * in the container into account. For example, it should not force to a
nullable type
+ * when null type is non-nullable, which means an empty array of null type.
Review comment:
Actually, I used the term `container` intentionally. There's one more place
that's used with expressions' nullability at `Cast`.
```scala
override def nullable: Boolean = Cast.forceNullable(child.dataType,
dataType) || child.nullable
```
Let me try to make it better a bit while I am here.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]