apache / apache/datafusion-sqlparser-rs

PostgreSQL: Support `PRIMARY KEY USING INDEX` syntax in `ALTER TABLE`

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

説明

The parser fails to parse the PostgreSQL-specific `PRIMARY KEY USING INDEX index_name` syntax in `ALTER TABLE` statements:

```sql
ALTER TABLE version_downloads
ADD CONSTRAINT version_downloads_pkey PRIMARY KEY USING INDEX version_downloads_unique;
```

```
Expected: a list of columns in parentheses, found: INDEX
```

## Expected behavior

This is valid PostgreSQL syntax per the [ALTER TABLE documentation](https://www.postgresql.org/docs/current/sql-altertable.html). The grammar allows:

```
ADD table_constraint_using_index
```

Where `table_constraint_using_index` can be:

```
[ CONSTRAINT constraint_name ]
{ UNIQUE | PRIMARY KEY } USING INDEX index_name
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
```

Note that `PRIMARY KEY USING INDEX index_name` is a distinct form that does **not** require a column list - it promotes an existing unique index to be the primary key constraint.

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

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

調査の方向性

まず、Rust SQLパーサーでALTER TABLEの文法とテーブル制約の処理を見つけます。このissueのPostgreSQLの例をパース入力として使用し、次にPRIMARY KEY USING INDEXのカバレッジを追加して、カラムリストを要求せずに文がパースされることを確認します。

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

評価

技術スタック
postgresql, rust, sql
領域
compilers, databases
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
明確に書かれている
初心者へのやさしさ
55/100

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

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