apache / apache/datafusion-sqlparser-rs

Missing Redshift constructs

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

説明

`RedshiftSqlDialect` on version 0.62.0 fails to parse a few core Redshift statements that the real engine accepts (tested on Redshift 1.0.347559):

```sql
-- 1. APPROXIMATE COUNT(DISTINCT)
SELECT APPROXIMATE COUNT(DISTINCT id) FROM t;
-- Expected: end of statement, found: (

-- 2. Column-level ENCODE in CREATE TABLE
CREATE TABLE t (id INT ENCODE az64, name VARCHAR(20) ENCODE lzo);
-- Expected: ',' or ')' after column definition, found: ENCODE

-- 3. CREATE EXTERNAL SCHEMA (Spectrum)
CREATE EXTERNAL SCHEMA s FROM DATA CATALOG DATABASE 'db' IAM_ROLE 'arn:...';
-- Expected: TABLE, found: SCHEMA
```

Each is documented, common Redshift syntax:
- `APPROXIMATE COUNT(DISTINCT ...)`: HyperLogLog cardinality [(docs)](https://docs.aws.amazon.com/redshift/latest/dg/r_COUNT.html)
- column-level compression `ENCODE ` in `CREATE TABLE` [(docs)](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_NEW.html)
- `CREATE EXTERNAL SCHEMA ... FROM DATA CATALOG`: Redshift Spectrum [(docs)](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html)

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

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

調査の方向性

RedshiftSqlDialect から始めて、3つの SQL 例に対する parser の経路を追跡します。存在する場合は、近くにある dialect のテストを確認します。完了条件は、次の3つの文がすべて正常に parse できることです: APPROXIMATE COUNT(DISTINCT)、列レベルの ENCODE、CREATE EXTERNAL SCHEMA。

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

評価

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

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

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