Skip to content

Commit a91498d

Browse files
authored
feat: support map_entries (#2059)
1 parent af27b37 commit a91498d

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ object QueryPlanSerde extends Logging with CometExprShim {
123123
classOf[Murmur3Hash] -> CometMurmur3Hash,
124124
classOf[XxHash64] -> CometXxHash64,
125125
classOf[MapKeys] -> CometMapKeys,
126+
classOf[MapEntries] -> CometMapEntries,
126127
classOf[MapValues] -> CometMapValues,
127128
classOf[MapFromArrays] -> CometMapFromArrays,
128129
classOf[GetMapValue] -> CometMapExtract,

spark/src/main/scala/org/apache/comet/serde/maps.scala

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,19 @@ object CometMapKeys extends CometExpressionSerde {
3737
}
3838
}
3939

40+
object CometMapEntries extends CometExpressionSerde {
41+
42+
override def convert(
43+
expr: Expression,
44+
inputs: Seq[Attribute],
45+
binding: Boolean): Option[ExprOuterClass.Expr] = {
46+
val mk = expr.asInstanceOf[MapEntries]
47+
val childExpr = exprToProtoInternal(mk.child, inputs, binding)
48+
val mapEntriesScalarExpr = scalarFunctionExprToProto("map_entries", childExpr)
49+
optExprWithInfo(mapEntriesScalarExpr, expr, expr.children: _*)
50+
}
51+
}
52+
4053
object CometMapValues extends CometExpressionSerde {
4154

4255
override def convert(

spark/src/test/scala/org/apache/comet/parquet/ParquetReadSuite.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1970,6 +1970,7 @@ class ParquetReadV1Suite extends ParquetReadSuite with AdaptiveSparkPlanHelper {
19701970
"optional_map.key, " +
19711971
"optional_map.value, " +
19721972
"map_keys(complex_map), " +
1973+
"map_entries(complex_map), " +
19731974
"map_values(complex_map) " +
19741975
"from complex_types"))
19751976
// leaf fields
@@ -1982,6 +1983,8 @@ class ParquetReadV1Suite extends ParquetReadSuite with AdaptiveSparkPlanHelper {
19821983
"optional_map.value, " +
19831984
"map_keys(complex_map)[0].key_field1, " +
19841985
"map_keys(complex_map)[0].key_field2, " +
1986+
"map_entries(complex_map)[0].key, " +
1987+
"map_entries(complex_map)[0].value, " +
19851988
"map_values(complex_map)[0].value_field1, " +
19861989
"map_values(complex_map)[0].value_field2 " +
19871990
"from complex_types"))

0 commit comments

Comments
 (0)