apache / apache/datafusion-sqlparser-rs

Parser is dropping Inner Joins when constructing the SQL from AST

Aberta
#938 7 comentários 0 reações 1 responsável Ver no GitHub

@kasvith já está trabalhando nisso.

Desde 9/9/2024.

Linguagem predominante
Rust
Estrelas
3.5k
Forks
774
Merge médio
4d 9h
PRs com merge (30d)
17

Descrição

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:

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:

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

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.