A view keeps reading a table after it is replaced: DataFusion binds views at creation
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 46/100
Línea de trabajo
Start by reading the Context table registration and deregistration behavior and the benchmark demo in benchmarks/ml referenced in the report. The issue offers documentation, a warning or refusal, or an upstream DataFusion report as possible directions, so first determine which outcome the maintainers want. Done means the chosen behavior is handled and the stale-view example no longer surprises users.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
On a Context, a view keeps reading the table it was created over, even after a new Dataset is registered under the same name. It returns the old rows without an error.
import numpy as np
import xarray as xr
import xarray_sql as xql
ctx = xql.Context()
ctx.from_dataset("t", xr.Dataset({"x": ("i", np.array([1.0]))}, coords={"i": [0]}))
ctx.sql("CREATE VIEW v AS SELECT x FROM t")
ctx.deregister_table("t")
ctx.from_dataset("t", xr.Dataset({"x": ("i", np.array([2.0]))}, coords={"i": [0]}))
print("table:", ctx.sql("SELECT x FROM t").to_pydict()) # {'x': [2.0]}
print("view: ", ctx.sql("SELECT x FROM v").to_pydict()) # {'x': [1.0]}: the old table
DataFusion 54.0.0, xarray-sql main. The same happens on a plain DataFusion SessionContext with register_record_batches, so the behavior is DataFusion's: CREATE VIEW stores a logical plan whose table scans hold the table providers that existed when the view was created.
Why it's a surprise:
- DuckDB (1.5.5) resolves a view's tables by name when the view is queried, so the same steps, with
xql.register, return the new rows. - PostgreSQL also binds a view to its tables when the view is created, but it refuses to drop a table that a view depends on unless you
DROP … CASCADE. So it never returns stale rows. - DataFusion binds early and also allows the drop, so the view silently reads data that is no longer registered.
Where it bites: any loop that replaces a Dataset under a fixed name and reads it through a view. Examples are a training loop that re-registers its parameters each step, or a pipeline that swaps in each day's data. I hit it while writing the GPT demo in benchmarks/ml (#269) as a model view plus a loss. The demo works around it by recreating the view after each re-registration.
Possible directions:
- Document it in the limitations page.
- Have
Contextwarn, or refuse, whenderegister_tableorfrom_datasetreplaces a table that a view reads. - Report it upstream to DataFusion, if late binding or a dependency check would be welcome there. I didn't find an existing issue in apache/datafusion.
🌀 Claude (ML demos, xarray-sql)
- Lenguaje dominante
- Python
- Estrellas
- 142
- Forks
- 19
- Merge medio
- 1 d 9 h
- PR fusionados (30 d)
- 9
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
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 xqlsystems/xarray-sql
-
documentation
Dificultad 1/5 1-3 horas Aptitud para principiantes 85/100
xqlsystems/xarray-sql#268 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
xqlsystems/xarray-sql#267 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 74/100
xqlsystems/xarray-sql#243 ·
Los mantenedores suelen responder en 1 día
-
publish.yml: the TestPyPI verification step is unreachable (and installs the wrong package name)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
xqlsystems/xarray-sql#242 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
xqlsystems/xarray-sql#237 ·
Los mantenedores suelen responder en 1 día
Todos los issues de xqlsystems/xarray-sql
Issues similares
-
good first issue tools
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Commits pushed after #1095 merged did not land (ahmi/unified-nova-mcp-review-e095 @ 80fa23a)Abiertobug deferred domain:ci P1
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
get_page_thumbnail modifies cached page images, affecting later thumbnails and picture exportsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
docling-project/docling-mcp#147 ·
-
issue: A pipe model's Valves button ignores the Allow Chat Valves permissionPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertobug confirmed issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
open-webui/open-webui#32771 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Scheduled Security Scan is failing on mainPosiblemente ocupada @pkupt la tomó hoy. Abiertosecurity-scan-failure
Dificultad 1/5 1-3 horas Aptitud para principiantes 74/100
semantica-agi/semantica#2045 ·
Los mantenedores suelen responder en 2 días