Quarantine the greedy ForeignExecutionPlan claim so it cannot be copied by accident
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 72/100
- Tipo de issue
- Refactorización
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- rust
- Área
- backend-api-design
Línea de trabajo
Comienza con examples/datafusion-ffi-example/src/physical_extension_codec.rs:125-150 y la guía relacionada en extension-guide/checklist.md. Sigue los statics y helpers utilizados por MyPhysicalExtensionCodec y, después, aísla el workaround detrás de claims(), park() y take() en src/foreign_plan_workaround.rs con la documentación de módulo especificada. Se considera terminado cuando grep encuentra exactamente un “NOT A PATTERN” en examples/ y cargo clippy --no-deps --all-targets termina sin errores.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Python
- Estrellas
- 605
- Forks
- 176
- Merge medio
- 1 d 23 h
- PR fusionados (30 d)
- 8
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de apache/datafusion-python
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
apache/datafusion-python#1726 ·
-
Dificultad 2/5 Medio día Aptitud para principiantes 88/100
apache/datafusion-python#1691 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
apache/datafusion-python#1644 ·
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
apache/datafusion-python#1737 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 76/100
apache/datafusion-python#1735 · 1 comentario ·
Todos los issues de apache/datafusion-python
Issues similares
-
triage/confirmed
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
agentscope-ai/agentscope#2775 ·
-
comp/desktop P3 type/bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
NousResearch/hermes-agent#118866 ·
-
bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
apache/cloudstack#14222 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100