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

    https://github.com/apache/spark/pull/21073#discussion_r197063803
  
    --- Diff: 
sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/CollectionExpressionsSuite.scala
 ---
    @@ -80,6 +80,138 @@ class CollectionExpressionsSuite extends SparkFunSuite 
with ExpressionEvalHelper
         checkEvaluation(MapEntries(ms2), null)
       }
     
    +  test("Map Concat") {
    +    val m0 = Literal.create(Map("a" -> "1", "b" -> "2"), 
MapType(StringType, StringType,
    +      valueContainsNull = false))
    +    val m1 = Literal.create(Map("c" -> "3", "a" -> "4"), 
MapType(StringType, StringType,
    +      valueContainsNull = false))
    +    val m2 = Literal.create(Map("d" -> "4", "e" -> "5"), 
MapType(StringType, StringType))
    +    val m3 = Literal.create(Map("a" -> "1", "b" -> "2"), 
MapType(StringType, StringType))
    +    val m4 = Literal.create(Map("a" -> null, "c" -> "3"), 
MapType(StringType, StringType))
    +    val m5 = Literal.create(Map("a" -> 1, "b" -> 2), MapType(StringType, 
IntegerType))
    +    val m6 = Literal.create(Map("a" -> null, "c" -> 3), 
MapType(StringType, IntegerType))
    +    val m7 = Literal.create(Map(List(1, 2) -> 1, List(3, 4) -> 2),
    +      MapType(ArrayType(IntegerType), IntegerType))
    +    val m8 = Literal.create(Map(List(5, 6) -> 3, List(1, 2) -> 4),
    +      MapType(ArrayType(IntegerType), IntegerType))
    +    val m9 = Literal.create(Map(Map(1 -> 2, 3 -> 4) -> 1, Map(5 -> 6, 7 -> 
8) -> 2),
    +      MapType(MapType(IntegerType, IntegerType), IntegerType))
    +    val m10 = Literal.create(Map(Map(9 -> 10, 11 -> 12) -> 3, Map(1 -> 2, 
3 -> 4) -> 4),
    +      MapType(MapType(IntegerType, IntegerType), IntegerType))
    +    val m11 = Literal.create(Map(1 -> "1", 2 -> "2"), MapType(IntegerType, 
StringType,
    +      valueContainsNull = false))
    +    val m12 = Literal.create(Map(3 -> "3", 4 -> "4"), MapType(IntegerType, 
StringType,
    +      valueContainsNull = false))
    +    val mNull = Literal.create(null, MapType(StringType, StringType))
    +
    +    // overlapping maps
    +    checkEvaluation(MapConcat(Seq(m0, m1)),
    +      (
    +        Array("a", "b", "c", "a"), // keys
    +        Array("1", "2", "3", "4") // values
    +      )
    +    )
    +
    +    // maps with no overlap
    +    checkEvaluation(MapConcat(Seq(m0, m2)),
    +      Map("a" -> "1", "b" -> "2", "d" -> "4", "e" -> "5"))
    +
    +    // 3 maps
    +    checkEvaluation(MapConcat(Seq(m0, m1, m2)),
    +      (
    +        Array("a", "b", "c", "a", "d", "e"), // keys
    +        Array("1", "2", "3", "4", "4", "5") // values
    +      )
    +    )
    +
    +    // null reference values
    +    checkEvaluation(MapConcat(Seq(m3, m4)),
    +      (
    +        Array("a", "b", "a", "c"), // keys
    +        Array("1", "2", null, "3") // values
    +      )
    +    )
    +
    +    // null primitive values
    +    checkEvaluation(MapConcat(Seq(m5, m6)),
    +      (
    +        Array("a", "b", "a", "c"), // keys
    +        Array(1, 2, null, 3) // values
    +      )
    +    )
    +
    +    // keys that are primitive
    +    checkEvaluation(MapConcat(Seq(m11, m12)),
    +      (
    +        Array(1, 2, 3, 4), // keys
    +        Array("1", "2", "3", "4") // values
    +      )
    +    )
    +
    +    // keys that are arrays, with overlap
    +    checkEvaluation(MapConcat(Seq(m7, m8)),
    +      (
    +        Array(List(1, 2), List(3, 4), List(5, 6), List(1, 2)), // keys
    +        Array(1, 2, 3, 4) // values
    +      )
    +    )
    +
    +    // keys that are maps, with overlap
    +    checkEvaluation(MapConcat(Seq(m9, m10)),
    +      (
    +        Array(Map(1 -> 2, 3 -> 4), Map(5 -> 6, 7 -> 8), Map(9 -> 10, 11 -> 
12),
    +          Map(1 -> 2, 3 -> 4)), // keys
    +        Array(1, 2, 3, 4) // values
    +      )
    +    )
    +
    +    // null map
    +    checkEvaluation(MapConcat(Seq(m0, mNull)),
    +      null)
    --- End diff --
    
    This should be 1 line? Also the following lines.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to