Enhance partition pruning to support NOT BETWEEN and NOT IN expressions
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
- 35/100
Línea de trabajo
The issue identifies src/lib.rs and the between_excludes and in_list_excludes functions. First confirm the Expr::Not bug is fixed and covered by the tests for IN-list and NOT filters, as the issue requires. Then add pruning for the stated NOT BETWEEN and single-point NOT IN cases; done means those cases prune safely while existing conservative behavior remains safe.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Background
In src/lib.rs, between_excludes and in_list_excludes return false immediately for negated forms:
// NOT BETWEEN is complex, be conservative
if between.negated { return false; }
// NOT IN is complex, be conservative
if in_list.negated { return false; }
The current conservative behavior (never prune) is always safe. These are opportunities to prune more aggressively.
NOT BETWEEN
NOT BETWEEN low AND high is equivalent to col < low OR col > high.
A partition [min, max] can be excluded if it falls entirely within [low, high] — i.e., min >= low AND max <= high. In that case ALL rows satisfy col BETWEEN low AND high, so NONE satisfy NOT BETWEEN.
NOT IN
A simpler conservative improvement: if the partition has a single point (min == max) and that exact value appears in the NOT IN list, the partition can be pruned.
Notes
- These are enhancements and are not critical for correctness — the current behavior is always safe.
- Implement after the
Expr::Notbug is confirmed fixed and covered by tests (see issue about IN-list and NOT filter test coverage).
- 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
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
Los mantenedores suelen responder en 1 día
-
good first issue module-baseline needs triage ux
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
darnitdevorg/darnit#650 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
nyjc-computing/campus#938 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
nf-osi/nf-metadata-dictionary#1027 ·
Los mantenedores suelen responder en 1 día
-
bug documentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
qatrackplus/qatrackplus#913 ·
Los mantenedores suelen responder en 3 días