apache / apache/datafusion-sqlparser-rs

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

Aperta
#2,132 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.