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_r396924298
 
 

 ##########
 File path: 
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Cast.scala
 ##########
 @@ -210,8 +206,15 @@ object Cast {
     case _ => false  // overflow
   }
 
+  /**
+   * Returns `true` iff it should change the nullability of this type in map 
type,
+   * array type, expressions such as cast, etc.
+   *
+   * Note that you should take the nullability context into account.
+   * For example, it should not force to nullable type when null type in array
+   * type is non-nullable which means an empty array of null type.
+   */
 
 Review comment:
   Yes, it will also change nullability based on child's nullability. 
Previously, `ArrayType` of non-nullable `NullType` makes a cast `ArrayType` of 
nullable type always. After this change, such cast can be non-nullable based on 
child's nullability.
   
   ```scala
   import org.apache.spark.sql.types._
   import org.apache.spark.sql.functions._
   spark.range(1).select(array().cast(ArrayType(IntegerType, 
false))).printSchema()
   ```
   
   Non-nullable `NullType` should always be empty, an empty array, an empty map 
or an empty struct. So, it wouldn't affect the nullability in the downstream.

----------------------------------------------------------------
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:
us...@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to