andygrove opened a new issue, #5585:
URL: https://github.com/apache/datafusion-comet/issues/5585

   Part of #5572.
   
   `CometStringTranslate` reports `Incompatible` unconditionally:
   
   ```scala
   override def getSupportLevel(expr: StringTranslate): SupportLevel = 
Incompatible(
     Some(incompatReason))
   ```
   
   `spark/src/main/scala/org/apache/comet/serde/strings.scala:119-120`
   
   The reason is real — DataFusion's `translate` iterates Unicode graphemes 
where Spark uses code points, and substitutes U+0000 rather than treating it as 
a deletion sentinel. But with no `CodegenDispatchFallback` mixin, the 
consequence is that `translate` falls the whole projection back to Spark unless 
the user sets `spark.comet.expression.StringTranslate.allowIncompatible=true` 
and accepts wrong answers.
   
   Every comparable string function in the same file already has the better 
shape: compatible by default through the dispatcher, native as an explicit 
opt-in. See `CometInitCap` (`:146`), `CometStringReplace` (`:177`), 
`CometCaseConversionBase` for `upper` / `lower` (`:50`), and the regex family 
at `:368`, `:470`, `:508`, `:545`, `:598`.
   
   Fix: mix `CodegenDispatchFallback` into `CometStringTranslate`. 
`StringTranslate` is a plain codegen expression over `StringType`, so 
`canHandle` admits it.
   
   Once that lands, `docs/source/user-guide/latest/expressions.md` should 
report `translate` as Hybrid, and the existing note about the 
grapheme/code-point difference becomes an opt-in caveat rather than a 
description of default behavior.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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

Reply via email to