andygrove opened a new pull request, #4139: URL: https://github.com/apache/datafusion-comet/pull/4139
## Which issue does this PR close? Closes #4077. ## Rationale for this change `StringDecode`, `ToPrettyString`, and `WidthBucket` were registered through `CometExprShim.versionSpecificExprToProtoInternal` and bypassed the `CometExpressionSerde` framework. They had no per-expression `enabled` config, no support-level gate, and no entry in the auto-generated compatibility guide. ## What changes are included in this PR? - Add category-keyed maps (`versionSpecificStringExpressions`, `versionSpecificMathExpressions`, `versionSpecificMiscExpressions`) to `CometExprShim`. `QueryPlanSerde` merges these into the global category maps. - Make `binaryOutputStyle` public on the trait so serde objects can read it via `QueryPlanSerde.binaryOutputStyle`. - Migrate `StringDecode` (3.4 / 3.5), `ToPrettyString` (3.5 / 4.x), and `WidthBucket` (3.5 / 4.x) to standalone `CometExpressionSerde[T]` objects under the relevant version source dirs. - Trim each shim's `versionSpecificExprToProtoInternal` to only the cases that cannot be keyed by `Class[_]`: `KnownNotContainsNull`, `Invoke`-on-`StructsToJsonEvaluator`, and the 4.x `StaticInvoke`-on-`StringDecode` rewrite. - `MapSort` is intentionally not migrated here. It lives on the `feat/map-sort-spark4` branch and will move in a follow-up after #4076 lands. ## How are these changes tested? - New framework tests (one per migrated expression) toggle the `spark.comet.expression.<X>.enabled` config and assert the expression now falls back to Spark when disabled. These tests fail before the refactor and pass after, demonstrating the framework integration works. - Existing tests (`CometToPrettyStringSuite` on 3.5 and 4.x, `CometStringExpressionSuite`) continue to pass, confirming no behavior change for accepted expressions. -- 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]
