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 7b615b6d8 fix: Remove duplicate serde code (#2098)
7b615b6d8 is described below

commit 7b615b6d8cfe81ee73a67955a706588ad36ed622
Author: Andy Grove <agr...@apache.org>
AuthorDate: Mon Aug 11 18:16:14 2025 -0600

    fix: Remove duplicate serde code (#2098)
---
 .../org/apache/comet/serde/QueryPlanSerde.scala    | 58 ----------------------
 .../scala/org/apache/comet/serde/strings.scala     | 12 +++--
 2 files changed, 8 insertions(+), 62 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 f1c79c2ad..85255d3ac 100644
--- a/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala
+++ b/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala
@@ -987,62 +987,6 @@ object QueryPlanSerde extends Logging with CometExprShim {
           }
         }
 
-      case Like(left, right, escapeChar) =>
-        if (escapeChar == '\\') {
-          createBinaryExpr(
-            expr,
-            left,
-            right,
-            inputs,
-            binding,
-            (builder, binaryExpr) => builder.setLike(binaryExpr))
-        } else {
-          // TODO custom escape char
-          withInfo(expr, s"custom escape character $escapeChar not supported 
in LIKE")
-          None
-        }
-
-      case RLike(left, right) =>
-        // we currently only support scalar regex patterns
-        right match {
-          case Literal(pattern, DataTypes.StringType) =>
-            if (!RegExp.isSupportedPattern(pattern.toString) &&
-              !CometConf.COMET_REGEXP_ALLOW_INCOMPATIBLE.get()) {
-              withInfo(
-                expr,
-                s"Regexp pattern $pattern is not compatible with Spark. " +
-                  s"Set ${CometConf.COMET_REGEXP_ALLOW_INCOMPATIBLE.key}=true 
" +
-                  "to allow it anyway.")
-              return None
-            }
-          case _ =>
-            withInfo(expr, "Only scalar regexp patterns are supported")
-            return None
-        }
-
-        createBinaryExpr(
-          expr,
-          left,
-          right,
-          inputs,
-          binding,
-          (builder, binaryExpr) => builder.setRlike(binaryExpr))
-
-      case StartsWith(attribute, prefix) =>
-        val attributeExpr = exprToProtoInternal(attribute, inputs, binding)
-        val prefixExpr = exprToProtoInternal(prefix, inputs, binding)
-        scalarFunctionExprToProto("starts_with", attributeExpr, prefixExpr)
-
-      case EndsWith(attribute, suffix) =>
-        val attributeExpr = exprToProtoInternal(attribute, inputs, binding)
-        val suffixExpr = exprToProtoInternal(suffix, inputs, binding)
-        scalarFunctionExprToProto("ends_with", attributeExpr, suffixExpr)
-
-      case Contains(attribute, value) =>
-        val attributeExpr = exprToProtoInternal(attribute, inputs, binding)
-        val valueExpr = exprToProtoInternal(value, inputs, binding)
-        scalarFunctionExprToProto("contains", attributeExpr, valueExpr)
-
       case SortOrder(child, direction, nullOrdering, _) =>
         val childExpr = exprToProtoInternal(child, inputs, binding)
 
@@ -1602,8 +1546,6 @@ object QueryPlanSerde extends Logging with CometExprShim {
         }
       case af @ ArrayFilter(_, func) if 
func.children.head.isInstanceOf[IsNotNull] =>
         convert(af, CometArrayCompact)
-      case ae: ArrayExcept =>
-        convert(ae, CometArrayExcept)
       case expr =>
         QueryPlanSerde.exprSerdeMap.get(expr.getClass) match {
           case Some(handler) =>
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 565fc40ea..de6284a2f 100644
--- a/spark/src/main/scala/org/apache/comet/serde/strings.scala
+++ b/spark/src/main/scala/org/apache/comet/serde/strings.scala
@@ -26,7 +26,7 @@ import org.apache.spark.sql.types.{DataTypes, LongType, 
StringType}
 
 import org.apache.comet.CometConf
 import org.apache.comet.CometSparkSessionExtensions.withInfo
-import org.apache.comet.expressions.CometEvalMode
+import org.apache.comet.expressions.{CometEvalMode, RegExp}
 import org.apache.comet.serde.ExprOuterClass.Expr
 import org.apache.comet.serde.QueryPlanSerde.{castToProto, createBinaryExpr, 
exprToProtoInternal, optExprWithInfo, scalarFunctionExprToProto}
 
@@ -130,9 +130,13 @@ object CometRLike extends CometExpressionSerde[RLike] {
   override def convert(expr: RLike, inputs: Seq[Attribute], binding: Boolean): 
Option[Expr] = {
     expr.right match {
       case Literal(pattern, DataTypes.StringType) =>
-        val regex = pattern.toString
-        if (regex.contains("(?i)") || regex.contains("(?-i)")) {
-          withInfo(expr, "Regex flag (?i) and (?-i) are not supported")
+        if (!RegExp.isSupportedPattern(pattern.toString) &&
+          !CometConf.COMET_REGEXP_ALLOW_INCOMPATIBLE.get()) {
+          withInfo(
+            expr,
+            s"Regexp pattern $pattern is not compatible with Spark. " +
+              s"Set ${CometConf.COMET_REGEXP_ALLOW_INCOMPATIBLE.key}=true " +
+              "to allow it anyway.")
           None
         } else {
           createBinaryExpr(


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

Reply via email to