Github user mn-mikke commented on a diff in the pull request:

    https://github.com/apache/spark/pull/21704#discussion_r202001514
  
    --- Diff: 
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypeCreator.scala
 ---
    @@ -179,11 +180,13 @@ case class CreateMap(children: Seq[Expression]) 
extends Expression {
         if (children.size % 2 != 0) {
           TypeCheckResult.TypeCheckFailure(
             s"$prettyName expects a positive even number of arguments.")
    -    } else if (keys.map(_.dataType).distinct.length > 1) {
    +    } else if (keys.length > 1 &&
    +      keys.map(_.dataType).sliding(2, 1).exists { case Seq(t1, t2) => 
!t1.sameType(t2) }) {
           TypeCheckResult.TypeCheckFailure(
             "The given keys of function map should all be the same type, but 
they are " +
               keys.map(_.dataType.simpleString).mkString("[", ", ", "]"))
    -    } else if (values.map(_.dataType).distinct.length > 1) {
    +    } else if (values.length > 1 &&
    +      values.map(_.dataType).sliding(2, 1).exists { case Seq(t1, t2) => 
!t1.sameType(t2) }) {
    --- End diff --
    
    The checks for keys and values are very similar. Would it be possible to 
separate the common logic into a private method?


---

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

Reply via email to