apache / apache/datafusion-python
Expose SessionContext.register_variable / deregister_variable for SQL @var support
- Lingua principale
- Python
- Stelle
- 604
- Fork
- 174
- Merge medio
- 1g 7h
- PR unite (30g)
- 4
Descrizione
## Background
DataFusion's `SessionContext` exposes `register_variable(var_type, provider)` and `deregister_variable(var_type)` for plugging in a `VarProvider` that resolves SQL ``@var`` / ``@@var`` references at execution time. These were surfaced during a v54 upstream coverage audit but are not exposed in the Python bindings.
## Upstream signature
```rust
pub fn register_variable(&self, var_type: VarType, provider: Arc)
pub fn deregister_variable(&self, var_type: VarType) -> Option>
```
`VarProvider` is a small trait with `get_value(&self, name: Vec) -> Result` and `get_type(&self, name: &[String]) -> Option`.
## User value
Enables SQL like ``SELECT * FROM sales WHERE region = @current_region AND user_id = @user_id`` where the provider supplies per-query values. Useful for multi-tenant SaaS embedders, BI / notebook tools that want session-scoped parameters without f-string interpolation (no SQL injection risk), and tools porting MySQL / Postgres SQL that uses session variables.
## Why deferred
Effort estimate is medium (~250-400 LOC): needs a `PyVarProvider` Rust wrapper that calls back into a user-supplied Python object across the GIL boundary, plus the register / deregister bindings on `PySessionContext`, plus a Python-facing ABC. No open user requests at the time of audit, so the work is currently speculative. Filed for tracking; revisit when a concrete user need surfaces or to complete the upstream surface area.
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Valutazione
Questa issue non è ancora stata valutata.