apache / apache/datafusion-sqlparser-rs

Add Support for Postgres JSON prepared query

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

説明

I am using sqlparser 0.4.0 with rust version 1.36.0
Query:
`
SELECT "emp"."id", "emp"."data" FROM "emp" WHERE id = $1 AND data->>'id'=$2 -- binds: ["emp_name", "123"]
`

Error:
`ParserError("Expected an expression, found: >")`

Dialect Used:
```rust
impl Dialect for MyPostgresSqlDialect {
fn is_identifier_start(&self, ch: char) -> bool {
(ch >= 'a' && ch <= 'z')
|| (ch >= 'A' && ch <= 'Z')
|| (ch == '@')
|| ch == '$'
|| ch == '_'
}

fn is_identifier_part(&self, ch: char) -> bool {
(ch >= 'a' && ch <= 'z')
|| (ch >= 'A' && ch <= 'Z')
|| (ch >= '0' && ch <= '9')
|| (ch == '@')
|| ch == '$'
|| ch == '_'
}
}
```

Even I am adding chars `-` and `>` into `is_identifier_part` then it is giving Error:: `ParserError("Expected end of statement, found: \'id\'")`

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

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

調査の方向性

まず、PostgreSQL 方言で報告されたクエリとエラーを再現し、次に is_identifier_start と is_identifier_part が JSON 抽出演算子と prepared-query のプレースホルダーをどのように処理するかを調べます。完了の条件は、場当たり的な識別子文字を必要とせずにクエリを正常にパースでき、示されている SQL 式のカバレッジがあることです。

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

評価

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

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

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