apache / apache/datafusion-sqlparser-rs

Regression: Decreased tolerance to column names matching SQL keywords

Abierto
#2,049 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Rust
Estrellas
3.5k
Forks
772
Merge medio
4 d 9 h
PR fusionados (30 d)
17

Descripción

Related to: https://github.com/apache/datafusion/issues/17802

Between versions `0.57.0` and `0.58.0` there appears to be a regression that decreased parser tolerance to column names that collide with SQL keywords.

Example:
```rust
use sqlparser::dialect::GenericDialect;
use sqlparser::parser::Parser;

fn main() {
let dialect = GenericDialect {}; // or AnsiDialect

let sql = r#"
SELECT
'a' as a,
offset
FROM my_table
"#;

let ast = Parser::parse_sql(&dialect, sql).unwrap();
println!("AST: {:#?}", ast);
}
```

This works on version `0.57.0`, but fails on `0.58.0` with error:
```
ParserError("Expected: end of statement, found: my_table at Line: 5, Column: 14")
```

These queries work fine, which adds some confusing inconsistency into the mix:
```sql
SELECT
offset
FROM my_table
```
```sql
SELECT
offset,
'a' as a
FROM my_table
```

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Comienza reproduciendo la consulta reportada con GenericDialect y AnsiDialect en las versiones 0.57.0 y 0.58.0, y después compara el comportamiento del parser en torno a la columna offset y la cláusula FROM. Rastrea los puntos de entrada del parser a los que llega este ejemplo y añade una prueba de regresión que cubra la consulta que falla; se considera terminado cuando la consulta se analiza de forma consistente sin romper las variantes que funcionan.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
rust, sql
Área
compilers
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
52/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.