apache / apache/datafusion-sqlparser-rs

Regression: Decreased tolerance to column names matching SQL keywords

Offen
#2,049 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Rust
Sterne
3.5k
Forks
772
Ø Merge
4 T. 9 Std.
Gemergte PRs (30 T.)
17

Beschreibung

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
```

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne damit, die gemeldete Abfrage mit GenericDialect und AnsiDialect unter den Versionen 0.57.0 und 0.58.0 zu reproduzieren, und vergleiche anschließend das Parser-Verhalten rund um die offset-Spalte und die FROM-Klausel. Verfolge die von diesem Beispiel erreichten Parser-Einstiegspunkte und füge einen Regressionstest hinzu, der die fehlschlagende Abfrage abdeckt; fertig ist die Änderung, wenn die Abfrage konsistent geparst wird, ohne die funktionierenden Varianten zu beeinträchtigen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rust, sql
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
52/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.