Build fails against DataFusion 54.1.0 due to new `schema` field on `RecursiveQuery`

Ouverte Adaptée aux débutants
#1,644 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
78/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Calme
Stack technique
python, rust
Domaine
build-system

Piste de recherche

Commencez dans crates/core/src/expr/recursive_query.rs, au niveau de l’initialiseur PyRecursiveQuery::new(), et examinez les exigences de dépendance de DataFusion du workspace. Exécutez cargo check --workspace --all-targets avec DataFusion 54.1.0 ; c’est terminé lorsque le constructeur et les exigences de dépendance prennent en charge cette version et que le workspace se compile et que les tests s’exécutent avec succès.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

bug

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".

Langage dominant
Python
Étoiles
605
Forks
176
Merge moyen
1 j 23 h
PR mergées (30 j)
8

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de apache/datafusion-python

Toutes les issues de apache/datafusion-python

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.