apache / apache/datafusion-sqlparser-rs

MySql dialect doesn't handle slash-escaped single quotes

Abierto
#362 2 comentarios 1 reacción 0 asignados Ver en GitHub
Lenguaje dominante
Rust
Estrellas
3.5k
Forks
772
Merge medio
4 d 9 h
PR fusionados (30 d)
17

Descripción

The following fails to parse:

```rust
fn main() {
println!("{:?}",
sqlparser::parser::Parser::parse_sql(
&sqlparser::dialect::MySqlDialect {},
r#"INSERT INTO `example` (`col`) VALUES ('foo \'bar\' baz');"#
)
);
}
```

Instead returning:

```
Err(ParserError("Expected ), found: bar"))
```

But I believe it shouldn't — `mysqldump` generates SQL that is escaped like this, and the [docs](https://dev.mysql.com/doc/refman/8.0/en/string-literals.html) explicitly mention this as a valid escaping (see Table 9.1).

This is, according to [this doc](https://www.ibm.com/docs/en/informix-servers/12.10?topic=statements-quotation-marks-escape-characters) a difference between ANSI SQL and MySQL, but unfortunately this needs to be fixed in the tokenizer, which AFAICT the dialect system doesn't have a way to hook into?

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Comienza con el tokenizer y la ruta de MySqlDialect utilizada por Parser::parse_sql; después reproduce el ejemplo INSERT proporcionado para rastrear cómo se tokenizan las comillas simples escapadas con barras. Se considera terminado cuando esta entrada de MySQL se analiza correctamente sin tratar las comillas escapadas como el final de la cadena.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
mysql, rust
Área
databases
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
38/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.