apache / apache/datafusion-sqlparser-rs

Can't parse valid Snowflake compound expression

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

説明

Hey there, thanks for the great project!

I'm encountering an issue with the following query, which is valid in Snowflake:

```sql
SELECT v.$2 FROM (VALUES (1, 'value1'), (2, 'value2')) AS v
```

It can't get parsed with sqlparser-rs:

```
Expected: an identifier or a '*' after '.', found: $2 at Line: 1, Column: 10
```

While this syntax isn't valid in PostgreSQL, it is accepted by Snowflake. `SELECT $2 FROM ...` (without the alias) parses correctly, so it seems the parser has trouble with positional parameters when they're part of compound expressions.

Is this a gap in the Snowflake dialect implementation?

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

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

調査の方向性

まず、Snowflake 方言に対応する parser の処理で、Snowflake クエリ `SELECT v.$2 FROM (VALUES (1, 'value1'), (2, 'value2')) AS v` を再現します。複合式が alias の後の位置パラメーター `$2` をどのように処理するかを追跡します。既存の `SELECT $2 FROM ...` のケースを後退させることなく、この有効な Snowflake 式が正常にパースできれば完了です。

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

評価

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

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

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