Xuanwo opened a new pull request, #24375: URL: https://github.com/apache/datafusion/pull/24375
## Which issue does this PR close? - Part of #318. - Umbrella PR: #23738. - Depends on #23828. ## Rationale for this change The physical ASOF operator in #23828 rejects floating-point equality keys because Arrow's total ordering distinguishes `-0.0` from `+0.0`, while join equality treats them as equal. That mismatch can split one equality group during the required input sort and make the forward-only ASOF scan choose the wrong row. This follow-up keeps the independently mergeable physical operator conservative, then adds complete Float16, Float32, and Float64 equality-key support as a separate stack layer. GitHub shows the cumulative stack because fork branches cannot be selected as upstream PR bases. The isolated diff for this layer is: https://github.com/Xuanwo/datafusion/compare/xuanwo/asof-physical...xuanwo/asof-float-equality ## What changes are included in this PR? - Add an order-preserving `NormalizeFloatZeroExpr` that maps `-0.0` to `+0.0` without changing other values. - Use the expression only for floating-point ASOF equality-key ordering, so the required sort order agrees with the existing join-key comparator. - Add protobuf encode/decode support so plans containing the required sort expression round-trip correctly. - Add a regression covering Float16, Float32, and Float64 where `(-0.0, ts=10)` followed by `(+0.0, ts=1)` must remain one group and select `ts=1` for a left `(+0.0, ts=5)` row. ## Are these changes tested? Yes: - `cargo fmt --all` - `cargo clippy --all-targets --all-features -- -D warnings` - ASOF physical operator tests, including all three floating-point types - Logical and physical protobuf round-trip tests - Extended workspace tests from the contributor guide - FFI integration tests ## Are there any user-facing changes? ASOF equality keys can use Float16, Float32, and Float64 while treating signed zero consistently with join equality. This layer also adds a public physical expression and an append-only protobuf oneof variant; existing wire tags are not reused. -- 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]
