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