Github user bdrillard commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20010#discussion_r158081192
  
    --- Diff: 
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/TypeCoercion.scala
 ---
    @@ -158,11 +169,6 @@ object TypeCoercion {
         findTightestCommonType(t1, t2)
           .orElse(findWiderTypeForDecimal(t1, t2))
           .orElse(stringPromotion(t1, t2))
    -      .orElse((t1, t2) match {
    -        case (ArrayType(et1, containsNull1), ArrayType(et2, 
containsNull2)) =>
    -          findWiderTypeForTwo(et1, et2).map(ArrayType(_, containsNull1 || 
containsNull2))
    -        case _ => None
    -      })
    --- End diff --
    
    @gczsjdy I've taken a shot at implementing your suggestion with 
`findWiderTypeForTwoComplex`, which takes as an argument a `widerTypeFunc`, 
describing which widening behavior to apply to point types (should they permit 
promotion to string or not). 
    
    Because `ArrayType` instances that would require widening the type could be 
nested in `StructType` and `MapType`, I think it's necessary to have more case 
matching than would be in `findWiderTypeForArray`, hence 
`findWiderTypeForTwoComplex`.


---

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

Reply via email to