apache / apache/datafusion-sqlparser-rs
make `Parser` generic around dialect
- Lenguaje dominante
- Rust
- Estrellas
- 3.5k
- Forks
- 772
- Merge medio
- 4 d 9 h
- PR fusionados (30 d)
- 17
Descripción
if we care about performance, we should stop using dynamic dispatch and make the parser generic around the dialect, with that we could make lots of these methods `const` (or drop the `Precedence` enum and just have const values on the trait) and probably improve performance significantly in general.
That would of course be a big change to the public API.
This is definitely how would implement `Parser` if I was starting now, but I think we should see some evidence that parsing SQL is a meaningful chunk of time for anyone before making a change like this.
My guess is that:
* even for quick queries, SQL parsing is <1% of query time
* making `Parser` generic and therefore dropping the restriction on `Dialect` that it has to be 'object safe' would actually only save us ~20%
If both those assumptions are right, this doesn't seem worth it unless it makes the code generally easier to reason with and work on.
_Originally posted by @samuelcolvin in https://github.com/sqlparser-rs/sqlparser-rs/issues/1379#issuecomment-2289164242_
(separate issue seems worth it for this discussion)
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Línea de trabajo
Comienza examinando Parser, Dialect y el enum Precedence; después, determina si el análisis de SQL constituye una parte significativa del tiempo de consulta. Evalúa mediante benchmarks el enfoque actual de despacho dinámico y compáralo con un diseño genérico de Parser. Se considera terminado cuando haya evidencia sobre la mejora de rendimiento y se haya establecido una dirección definida para el cambio de la API pública.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- rust
- Área
- compilers, databases
- Tipo de issue
- Refactorización
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 25/100