Describe the bug
datafusion-python does not build against DataFusion 54.1.0. The workspace
dependencies are declared as version = "54", so Cargo is free to resolve them
to 54.1.0, but the crate no longer compiles when it does:
error[E0063]: missing field `schema` in initializer of `datafusion::logical_expr::RecursiveQuery`
--> crates/core/src/expr/recursive_query.rs:72:20
|
72 | query: RecursiveQuery {
| ^^^^^^^^^^^^^^ missing `schema`
DataFusion 54.1.0 added a schema: DFSchemaRef field to
datafusion_expr::logical_plan::RecursiveQuery and introduced
RecursiveQuery::try_new(), which computes that schema by reconciling the
static and recursive terms. Our PyRecursiveQuery::new() builds the struct
with a literal initializer, so the new field breaks it.
To Reproduce
With a Cargo.lock that resolves DataFusion to 54.1.0 (e.g. a fresh checkout
without the committed lock file, or after cargo update -p datafusion --precise 54.1.0):
cargo check --workspace --all-targets
Expected behavior
datafusion-python builds and tests against DataFusion 54.1.0.
Additional context
Because the existing version requirements are "54", this is not limited to
developers who explicitly opt in — any consumer resolving the dependency fresh
picks up 54.1.0 and hits the failure. The fix is to use
RecursiveQuery::try_new() and pin the workspace requirements to "54.1".
Describe the bug
datafusion-pythondoes not build against DataFusion 54.1.0. The workspacedependencies are declared as
version = "54", so Cargo is free to resolve themto 54.1.0, but the crate no longer compiles when it does:
DataFusion 54.1.0 added a
schema: DFSchemaReffield todatafusion_expr::logical_plan::RecursiveQueryand introducedRecursiveQuery::try_new(), which computes that schema by reconciling thestatic and recursive terms. Our
PyRecursiveQuery::new()builds the structwith a literal initializer, so the new field breaks it.
To Reproduce
With a
Cargo.lockthat resolves DataFusion to 54.1.0 (e.g. a fresh checkoutwithout the committed lock file, or after
cargo update -p datafusion --precise 54.1.0):Expected behavior
datafusion-pythonbuilds and tests against DataFusion 54.1.0.Additional context
Because the existing version requirements are
"54", this is not limited todevelopers who explicitly opt in — any consumer resolving the dependency fresh
picks up 54.1.0 and hits the failure. The fix is to use
RecursiveQuery::try_new()and pin the workspace requirements to"54.1".