apache / apache/datafusion-sqlparser-rs
Misleading error message for typo in IF NOT EXISTS
- 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