apache / apache/datafusion-sqlparser-rs
Misleading error message for typo in IF NOT EXISTS
- Lenguaje dominante
- Rust
- Estrellas
- 3.5k
- Forks
- 772
- Merge medio
- 4 d 9 h
- PR fusionados (30 d)
- 17
Descripción
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`.
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Línea de trabajo
Comienza con el ejemplo de Rust proporcionado, usando GenericDialect y Parser::parse_sql en la sentencia CREATE TABLE IF NOT EXIST; después, sigue la ruta del parser para CREATE TABLE y IF NOT EXISTS. El trabajo estará terminado cuando el error tipográfico produzca un error apropiado del parser en lugar del mensaje engañoso de fin de sentencia.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- rust, sql
- Área
- compilers, databases
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 45/100