apache / apache/datafusion-sqlparser-rs

stop the use of `dialect_of` and referring to specific dialects in parser

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

説明

TL;DR; — I want to stop `Parser` from referring to specific dialects, and instead consult the dialect about specific behaviour.

In particular, use of `dialect_of` and custom dialect behaviour in `Parser` should be removed

Abstract reasons to do this:
* it's very esoteric in Rust, I've never seen another library use this approach, It's like reading (bad) python, in Rust
* it's poor separation of concerns — the Parser should concentrate on parsing SQL, and defer to the dialect about how to behave in some scenarios, rather than holding information about how mysql differs from Snowflake etc.

Concrete reasons to do this:
* I want to use "from first" syntax (#1400) with otherwise postgres syntax — currently dialects can't opt into certain behaviour because the parser is checking for a specific dialect, not for a given behaviour

I've already discussed this with @alamb, I'll try to do this in multiple PRs, to make it easier to review.

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

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

調査の方向性

まず、Parser による dialect_of の使用箇所と、カスタム dialect の動作を追跡します。これらの経路を、issue #1400 の “from first” 構文に必要な動作と比較します。完了条件は、Parser が特定の dialect を参照せず、それらの判断について dialect に問い合わせるようになることです。

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

評価

技術スタック
rust, sql
領域
compilers, databases
issue の種類
リファクタリング
難易度
5/5
見積もり時間
1週間以上
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

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

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