apache / apache/datafusion-sqlparser-rs

Misleading error message for typo in IF NOT EXISTS

Offen
#1,169 7 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

See also https://github.com/GreptimeTeam/greptimedb/issues/3471.

For sqlparser-rs -

```rust
fn main() {
let sql = "CREATE TABLE IF NOT EXIST ();";

let dialect = GenericDialect {};

let ast = Parser::parse_sql(&dialect, sql).unwrap();

println!("AST: {ast:?}");
}
```

throws:

```
called `Result::unwrap()` on an `Err` value: ParserError("Expected end of statement, found: NOT at Line: 1, Column 17")
```

IIUC if we found `IF` already, the next keywords SHOULD BE `NOT EXIST` and thus the parsing logics should be `.expect_keywords`.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginnen Sie mit dem bereitgestellten Rust-Beispiel, verwenden Sie GenericDialect und Parser::parse_sql für die CREATE TABLE IF NOT EXIST-Anweisung; verfolgen Sie dann den Parser-Pfad für CREATE TABLE und IF NOT EXISTS. Die Aufgabe ist erledigt, wenn der Tippfehler einen passenden Parserfehler statt der irreführenden Meldung zum Anweisungsende erzeugt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

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

Neue Issues direkt in Ihr Postfach

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