apache / apache/datafusion-sqlparser-rs

SQL is parsed incorrectly when `trailing_commas` is not set

オープン
#1,064 コメント 4 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Rust
スター
3.5k
フォーク
772
平均マージ
4日 9時間
マージ済み PR(30日)
17

説明

When parser not set `trailing_commas=true` in `ParserOptions` or use `BigQueryDialect`, the following SQL will be wrongly parse instead of throw an error.

```sql
SELECT foo, bar, FROM baz

-- Will be wrongly parse instead of throw an error.

SELECT foo, bar, FROM AS baz
```

In theory it should throw a error

relevant code

```rust
#[test]
fn parse_range_select() {
let statements = Parser::parse_sql(&GenericDialect {}, "SELECT foo, bar, FROM baz").unwrap();
println!("{}", statements[0]);
}
```

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

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

調査の方向性

parse_range_select の例にある Parser::parse_sql 呼び出しから始め、trailing_commas が設定されていない場合に GenericDialect が SELECT リストをどのように処理するかを確認してください。示されているクエリを対象とするリグレッションテストを追加し、不正な末尾カンマ構文は拒否しつつ、設定された trailing_commas の動作は引き続きサポートされるようにしてください。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
rust
領域
compilers
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
45/100

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

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