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

agrove 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 dd16feff2 chore: Refactor serde for Length (#2547)
dd16feff2 is described below

commit dd16feff2528f4ab088277b51d3755617161a012
Author: Andy Grove <[email protected]>
AuthorDate: Mon Oct 13 07:59:48 2025 -0600

    chore: Refactor serde for Length (#2547)
---
 .../main/scala/org/apache/comet/serde/QueryPlanSerde.scala    |  5 +----
 spark/src/main/scala/org/apache/comet/serde/strings.scala     | 11 +++++++++--
 2 files changed, 10 insertions(+), 6 deletions(-)

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 0a4b61fce..02a5e9d94 100644
--- a/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala
+++ b/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala
@@ -166,7 +166,7 @@ object QueryPlanSerde extends Logging with CometExprShim {
     classOf[Contains] -> CometScalarFunction("contains"),
     classOf[EndsWith] -> CometScalarFunction("ends_with"),
     classOf[InitCap] -> CometInitCap,
-    classOf[Length] -> CometScalarFunction("length"),
+    classOf[Length] -> CometLength,
     classOf[Like] -> CometLike,
     classOf[Lower] -> CometLower,
     classOf[OctetLength] -> CometScalarFunction("octet_length"),
@@ -891,9 +891,6 @@ object QueryPlanSerde extends Logging with CometExprShim {
           withInfo(expr, bloomFilter, value)
           None
         }
-      case l @ Length(child) if child.dataType == BinaryType =>
-        withInfo(l, "Length on BinaryType is not supported")
-        None
       case r @ Reverse(child) if child.dataType.isInstanceOf[ArrayType] =>
         convert(r, CometArrayReverse)
       case expr =>
diff --git a/spark/src/main/scala/org/apache/comet/serde/strings.scala 
b/spark/src/main/scala/org/apache/comet/serde/strings.scala
index 9c85d8d6c..02872eef3 100644
--- a/spark/src/main/scala/org/apache/comet/serde/strings.scala
+++ b/spark/src/main/scala/org/apache/comet/serde/strings.scala
@@ -21,8 +21,8 @@ package org.apache.comet.serde
 
 import java.util.Locale
 
-import org.apache.spark.sql.catalyst.expressions.{Attribute, Cast, Expression, 
InitCap, Like, Literal, Lower, RLike, StringLPad, StringRepeat, StringRPad, 
Substring, Upper}
-import org.apache.spark.sql.types.{DataTypes, LongType, StringType}
+import org.apache.spark.sql.catalyst.expressions.{Attribute, Cast, Expression, 
InitCap, Length, Like, Literal, Lower, RLike, StringLPad, StringRepeat, 
StringRPad, Substring, Upper}
+import org.apache.spark.sql.types.{BinaryType, DataTypes, LongType, StringType}
 
 import org.apache.comet.CometConf
 import org.apache.comet.CometSparkSessionExtensions.withInfo
@@ -66,6 +66,13 @@ object CometUpper extends 
CometCaseConversionBase[Upper]("upper")
 
 object CometLower extends CometCaseConversionBase[Lower]("lower")
 
+object CometLength extends CometScalarFunction[Length]("length") {
+  override def getSupportLevel(expr: Length): SupportLevel = 
expr.child.dataType match {
+    case _: BinaryType => Unsupported(Some("Length on BinaryType is not 
supported"))
+    case _ => Compatible()
+  }
+}
+
 object CometInitCap extends CometScalarFunction[InitCap]("initcap") {
 
   override def getSupportLevel(expr: InitCap): SupportLevel = {


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

Reply via email to