apache / apache/datafusion-sqlparser-rs

Parser is dropping Inner Joins when constructing the SQL from AST

Abierto
#938 7 comentarios 0 reacciones 1 asignado Reclamado por @kasvith Ver en GitHub
Lenguaje dominante
Rust
Estrellas
3.5k
Forks
772
Merge medio
4 d 9 h
PR fusionados (30 d)
17

Descripción

# Problem

A SQL statement with an Inner Join is given to the parser, once converted to AST and getting the result back as a SQL string parser loose the inner join altering original SQL statement.

I know `INNER JOIN` is represented as `JOIN` in many dialects. But since parser alters original query when converted back to AST is a problem as it is loosing information.

**Example:**
```rust
fn main() {
let sql_select = "SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate FROM Orders INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID";

let dialect = MySqlDialect {}; // or AnsiDialect, or your own dialect ...
let mut ast = Parser::parse_sql(&dialect, sql_select).unwrap();

assert_eq!(ast[0].to_string(), sql_select);
}
```

**Output:**
```bash
thread 'main' panicked at 'assertion failed: `(left == right)`
left: `"SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate FROM Orders JOIN Customers ON Orders.CustomerID = Customers.CustomerID"`,
right: `"SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate FROM Orders INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID"`', src/main.rs:111:5
```

Guía de contribución

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

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.