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