Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Quarantine the greedy ForeignExecutionPlan claim so it cannot be copied by accident

Offen
#1,725 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
72/100
Issue-Typ
Refactoring
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
rust

Rechercherichtung

Beginne mit examples/datafusion-ffi-example/src/physical_extension_codec.rs:125-150 und der zugehörigen Anleitung in extension-guide/checklist.md. Verfolge die von MyPhysicalExtensionCodec verwendeten Statics und Helper und kapsle dann den Workaround hinter claims(), park() und take() in src/foreign_plan_workaround.rs mit der angegebenen Modul-Dokumentation. Erledigt ist die Aufgabe, wenn grep genau ein “NOT A PATTERN” in examples/ findet und cargo clippy --no-deps --all-targets sauber durchläuft.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

documentation rust

examples/datafusion-ffi-example/src/physical_extension_codec.rs:150 claims node.is::<DataSourceExec>() || node.is::<ForeignExecutionPlan>(). The second arm takes every other library's nodes, which extension-guide/checklist.md tells authors never to do.

This is not a bug to fix. It is G2 in #1719: the arm is load-bearing for upstream defect apache/datafusion#25152, and narrowing it to DataSourceExec alone makes 31 of the 51 tests in datafusion-ffi-query-planner-example fail. The object registry in the same file is downstream of it — once you claim a node you cannot introspect, there is nothing to write down about it, so parking it is all that is left.

The goal is to make it impossible to copy by accident while it stays. Proposal: move the statics and helpers into a new src/foreign_plan_workaround.rs behind three deliberately blunt functions — claims(), park(), take(). Nobody reads foreign_plan_workaround::park(node, buf) and thinks they are looking at serialization. The 25-line explanation currently buried inside a function body at lines 125-149 becomes the module //! doc, with three greppable fields:

//! # NOT A PATTERN
//! **Blocked on:** <https://github.com/apache/datafusion/issues/25152>
//! **Delete when:** `FFI_PlanProperties` carries `scheduling_type`, or
//!   `ForeignExecutionPlan` gains a reachable `try_to_proto`.
//! **Copying this will:** claim every other library's plan nodes, and produce
//!   payloads that decode only in the writing process, exactly once each.

One honesty note belongs in that doc: the DataSourceExec arm could be durable and is not, because the registry has to exist for the ForeignExecutionPlan arm regardless. Splitting the two arms across two wire formats costs real code and removes nothing. Saying so lets the guide claim the registry cannot be removed without also claiming every byte of it is forced.

Do not rename MyPhysicalExtensionCodec — 21 call sites plus two doc references, and the module doc already carries the label.

Done when: grep -rn "NOT A PATTERN" examples/ returns exactly one site, and cargo clippy --no-deps --all-targets is clean. No test changes expected; this is code motion plus documentation.

Vorherrschende Sprache
Python
Sterne
605
Forks
176
Ø Merge
1 T. 23 Std.
Gemergte PRs (30 T.)
8

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus apache/datafusion-python

Alle Issues in apache/datafusion-python

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.