Github user ueshin commented on a diff in the pull request:
https://github.com/apache/spark/pull/22013#discussion_r210162791
--- Diff:
sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/HigherOrderFunctionsSuite.scala
---
@@ -283,6 +289,75 @@ class HigherOrderFunctionsSuite extends SparkFunSuite
with ExpressionEvalHelper
15)
}
+ test("TransformKeys") {
+ val ai0 = Literal.create(
+ Map(1 -> 1, 2 -> 2, 3 -> 3, 4 -> 4),
+ MapType(IntegerType, IntegerType, valueContainsNull = false))
+ val ai1 = Literal.create(
+ Map.empty[Int, Int],
+ MapType(IntegerType, IntegerType, valueContainsNull = true))
+ val ai2 = Literal.create(
+ Map(1 -> 1, 2 -> null, 3 -> 3),
+ MapType(IntegerType, IntegerType, valueContainsNull = true))
+ val ai3 = Literal.create(null, MapType(IntegerType, IntegerType,
valueContainsNull = false))
+
+ val plusOne: (Expression, Expression) => Expression = (k, v) => k + 1
+ val plusValue: (Expression, Expression) => Expression = (k, v) => k + v
+ val modKey: (Expression, Expression) => Expression = (k, v) => k % 3
+
+ checkEvaluation(transformKeys(ai0, plusOne), Map(2 -> 1, 3 -> 2, 4 ->
3, 5 -> 4))
+ checkEvaluation(transformKeys(ai0, plusValue), Map(2 -> 1, 4 -> 2, 6
-> 3, 8 -> 4))
+ checkEvaluation(
+ transformKeys(transformKeys(ai0, plusOne), plusValue), Map(3 -> 1, 5
-> 2, 7 -> 3, 9 -> 4))
+ checkEvaluation(transformKeys(ai0, modKey),
+ ArrayBasedMapData(Array(1, 2, 0, 1), Array(1, 2, 3, 4)))
+ checkEvaluation(transformKeys(ai1, plusOne), Map.empty[Int, Int])
+ checkEvaluation(transformKeys(ai1, plusOne), Map.empty[Int, Int])
+ checkEvaluation(
+ transformKeys(transformKeys(ai1, plusOne), plusValue),
Map.empty[Int, Int])
+ checkEvaluation(transformKeys(ai2, plusOne), Map(2 -> 1, 3 -> null, 4
-> 3))
+ checkEvaluation(
+ transformKeys(transformKeys(ai2, plusOne), plusOne), Map(3 -> 1, 4
-> null, 5 -> 3))
+ checkEvaluation(transformKeys(ai3, plusOne), null)
+
+ val as0 = Literal.create(
+ Map("a" -> "xy", "bb" -> "yz", "ccc" -> "zx"),
+ MapType(StringType, StringType, valueContainsNull = false))
+ val as1 = Literal.create(
+ Map("a" -> "xy", "bb" -> "yz", "ccc" -> null),
+ MapType(StringType, StringType, valueContainsNull = true))
+ val as2 = Literal.create(null,
+ MapType(StringType, StringType, valueContainsNull = false))
+ val asn = Literal.create(Map.empty[StringType, StringType],
--- End diff --
`as3`?
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]