apache / apache/datafusion-sqlparser-rs
Regression: Decreased tolerance to column names matching SQL keywords
- Lingua principale
- Rust
- Stelle
- 3.5k
- Fork
- 772
- Merge medio
- 4g 9h
- PR unite (30g)
- 17
Descrizione
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
```
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Direzione di ricerca
Inizia riproducendo la query segnalata con GenericDialect e AnsiDialect nelle versioni 0.57.0 e 0.58.0, quindi confronta il comportamento del parser in corrispondenza della colonna offset e della clausola FROM. Traccia i punti di ingresso del parser raggiunti da questo esempio e aggiungi un regression test che copra la query che fallisce; il lavoro è completato quando la query viene interpretata in modo coerente senza rompere le varianti funzionanti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- rust, sql
- Ambito
- compilers
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 52/100