apache / apache/datafusion-sqlparser-rs
PostgreSQL: Support `PRIMARY KEY USING INDEX` syntax in `ALTER TABLE`
- Lingua principale
- Rust
- Stelle
- 3.5k
- Fork
- 772
- Merge medio
- 4g 9h
- PR unite (30g)
- 17
Descrizione
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.
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Direzione di ricerca
Inizia individuando la grammatica di ALTER TABLE e la gestione dei vincoli di tabella nel parser SQL Rust. Usa l’esempio PostgreSQL di questa issue come input di parsing, quindi aggiungi la copertura per PRIMARY KEY USING INDEX e conferma che l’istruzione venga analizzata senza richiedere un elenco di colonne.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- postgresql, rust, sql
- Ambito
- compilers, databases
- Tipo di issue
- Bug
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Ferma
- Chiarezza
- Specificata chiaramente
- Idoneità per principianti
- 55/100