ryzhyk opened a new issue, #14862:
URL: https://github.com/apache/datafusion/issues/14862
### Describe the bug
When datafusion is used in a workspace that enables the `rkyv-64` feature in
the `chrono` crate, this triggers a Rust compilation error:
```
error[E0277]: can't compare `Option<&std::string::String>` with `Option<&mut
std::string::String>`
--> datafusion/expr/src/logical_plan/plan.rs:2872:43
|
2872 | merged.retain(|k, v| input.get(k) == Some(v));
| ^^ no implementation for
`Option<&std::string::String> == Option<&mut std::string::String>`
|
= help: the trait `PartialEq<Option<&mut std::string::String>>` is not
implemented for `Option<&std::string::String>`
= help: the following other types implement trait `PartialEq<Rhs>`:
`Option<T>` implements `PartialEq`
`Option<U>` implements
`PartialEq<rkyv::option::ArchivedOption<T>>`
```
The root cause of the error is incorrect type unification in the Rust
compiler, as explained in https://github.com/rkyv/rkyv/issues/434.
I will submit a PR with a workaround.
### To Reproduce
Change `Cargo.toml` to enable the `rkyv-64` feature in chrono and try
building the `datafusion-expr` crate:
```
chrono = { version = "0.4.38", default-features = false, features =
["rkyv-64"] }
```
### Expected behavior
_No response_
### Additional context
_No response_
--
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]