Quarantine the greedy ForeignExecutionPlan claim so it cannot be copied by accident
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 72/100
- Tipo di issue
- Refactoring
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- rust
- Ambito
- backend-api-design
Direzione di ricerca
Inizia da examples/datafusion-ffi-example/src/physical_extension_codec.rs:125-150 e dalle indicazioni correlate in extension-guide/checklist.md. Traccia gli statics e gli helpers usati da MyPhysicalExtensionCodec, quindi isola il workaround dietro claims(), park() e take() in src/foreign_plan_workaround.rs con la documentazione del modulo specificata. Il lavoro è completato quando grep trova esattamente un “NOT A PATTERN” in examples/ e cargo clippy --no-deps --all-targets termina senza errori.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Python
- Stelle
- 605
- Fork
- 176
- Merge medio
- 1g 23h
- PR unite (30g)
- 8
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/datafusion-python
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
apache/datafusion-python#1757 ·
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
apache/datafusion-python#1726 ·
-
Difficoltà 2/5 Mezza giornata Idoneità per principianti 88/100
apache/datafusion-python#1691 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
apache/datafusion-python#1644 ·
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
apache/datafusion-python#1737 ·
Tutte le issue di apache/datafusion-python
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
learningequality/ricecooker#747 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
BSData/horus-heresy-3rd-edition#3171 ·
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
run-llama/llama_index#23199 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
KhronosGroup/glTF-Blender-IO#2769 ·