apache / apache/datafusion-sqlparser-rs

Parser is dropping Inner Joins when constructing the SQL from AST

オープン
#938 コメント 7 件 リアクション 0 件 担当者 1 名 @kasvith が担当を希望しています GitHub で見る
主要言語
Rust
スター
3.5k
フォーク
772
平均マージ
4日 9時間
マージ済み PR(30日)
17

説明

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

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。