apache / apache/datafusion-sqlparser-rs

Parser is dropping Inner Joins when constructing the SQL from AST

Đang mở
#938 7 bình luận 0 reaction 1 người được giao Được @kasvith nhận Xem trên GitHub
Ngôn ngữ chính
Rust
Star
3.5k
Fork
772
Merge trung bình
4 ngày 9 giờ
Pull request đã merge (30 ngày)
17

Mô tả

# 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
```

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.