apache / apache/datafusion-sqlparser-rs
Can't parse jsonb extractions in an on conflict in Postgres
オープン
- 主要言語
- Rust
- スター
- 3.5k
- フォーク
- 772
- 平均マージ
- 4日 9時間
- マージ済み PR(30日)
- 17
説明
The parser does not support the following:
```sql
INSERT INTO table_with_constraint_over_jsonb (a_number, a_jsonb, a_string)
VALUES ($1, $2, $3)
ON CONFLICT (a_number, (a_jsonb->>'name'))
DO UPDATE SET a_string = EXCLUDED.a_string
RETURNING *;
```
It errors on the `(a_jsonb->>'name')` part with the error: `ParserError("Expected: identifier, found: ( at Line: 1, Column: 119")`.
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
調査の方向性
まず、issue に記載された SQL 文で parser エラーを再現し、ON CONFLICT target 内の括弧で囲まれた jsonb 抽出に注目します。次に、SQL parser における ON CONFLICT 式の処理を追跡し、その後、他の conflict target にリグレッションを生じさせずにこの文が正常にパースされることを確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- postgres, rust, sql
- 領域
- compilers, databases
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 48/100