This is an automated email from the ASF dual-hosted git repository.

comphead pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion-comet.git


The following commit(s) were added to refs/heads/main by this push:
     new a91498df4 feat: support `map_entries` (#2059)
a91498df4 is described below

commit a91498df45b7831f4ee96624484896206c9386e6
Author: Oleks V <comph...@users.noreply.github.com>
AuthorDate: Fri Aug 1 16:17:22 2025 -0700

    feat: support `map_entries` (#2059)
---
 .../main/scala/org/apache/comet/serde/QueryPlanSerde.scala  |  1 +
 spark/src/main/scala/org/apache/comet/serde/maps.scala      | 13 +++++++++++++
 .../scala/org/apache/comet/parquet/ParquetReadSuite.scala   |  3 +++
 3 files changed, 17 insertions(+)

diff --git a/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala 
b/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala
index 45ca67ed7..022480cc9 100644
--- a/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala
+++ b/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala
@@ -123,6 +123,7 @@ object QueryPlanSerde extends Logging with CometExprShim {
     classOf[Murmur3Hash] -> CometMurmur3Hash,
     classOf[XxHash64] -> CometXxHash64,
     classOf[MapKeys] -> CometMapKeys,
+    classOf[MapEntries] -> CometMapEntries,
     classOf[MapValues] -> CometMapValues,
     classOf[MapFromArrays] -> CometMapFromArrays,
     classOf[GetMapValue] -> CometMapExtract,
diff --git a/spark/src/main/scala/org/apache/comet/serde/maps.scala 
b/spark/src/main/scala/org/apache/comet/serde/maps.scala
index 682d03ba7..ca4e9850e 100644
--- a/spark/src/main/scala/org/apache/comet/serde/maps.scala
+++ b/spark/src/main/scala/org/apache/comet/serde/maps.scala
@@ -37,6 +37,19 @@ object CometMapKeys extends CometExpressionSerde {
   }
 }
 
+object CometMapEntries extends CometExpressionSerde {
+
+  override def convert(
+      expr: Expression,
+      inputs: Seq[Attribute],
+      binding: Boolean): Option[ExprOuterClass.Expr] = {
+    val mk = expr.asInstanceOf[MapEntries]
+    val childExpr = exprToProtoInternal(mk.child, inputs, binding)
+    val mapEntriesScalarExpr = scalarFunctionExprToProto("map_entries", 
childExpr)
+    optExprWithInfo(mapEntriesScalarExpr, expr, expr.children: _*)
+  }
+}
+
 object CometMapValues extends CometExpressionSerde {
 
   override def convert(
diff --git 
a/spark/src/test/scala/org/apache/comet/parquet/ParquetReadSuite.scala 
b/spark/src/test/scala/org/apache/comet/parquet/ParquetReadSuite.scala
index 581c60611..a3858f169 100644
--- a/spark/src/test/scala/org/apache/comet/parquet/ParquetReadSuite.scala
+++ b/spark/src/test/scala/org/apache/comet/parquet/ParquetReadSuite.scala
@@ -1970,6 +1970,7 @@ class ParquetReadV1Suite extends ParquetReadSuite with 
AdaptiveSparkPlanHelper {
                       "optional_map.key, " +
                       "optional_map.value, " +
                       "map_keys(complex_map), " +
+                      "map_entries(complex_map), " +
                       "map_values(complex_map) " +
                       "from complex_types"))
                 // leaf fields
@@ -1982,6 +1983,8 @@ class ParquetReadV1Suite extends ParquetReadSuite with 
AdaptiveSparkPlanHelper {
                       "optional_map.value, " +
                       "map_keys(complex_map)[0].key_field1, " +
                       "map_keys(complex_map)[0].key_field2, " +
+                      "map_entries(complex_map)[0].key, " +
+                      "map_entries(complex_map)[0].value, " +
                       "map_values(complex_map)[0].value_field1, " +
                       "map_values(complex_map)[0].value_field2 " +
                       "from complex_types"))


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

Reply via email to