apache / apache/datafusion-sqlparser-rs

Nested type modifiers/complex type

Aperta
#1,932 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

Example Trino SQL:
```sql
SELECT
row_id,
array_agg(
CAST(
ROW(
total_amount
)
AS
ROW(
total_amount Decimal(14,2)
)
)
ORDER BY payment_requested_date DESC
) AS payment_request_details
FROM
iceberg.my_table_name
GROUP BY 1
```

This throws an error when using `GenericDialect`, specifically when it tries to parse `Decimal(14,2)`: ```ParserError("Expected: type modifiers, found: ( at Line: 10, Column: 37")```

Stepping through the code it looks like this is because it does not support deeply nested definitions because `parse_optional_type_modifiers` does not allow `Token::LParen`.

This may be by design, but it may break parsing when you get to really complex queries (e.g. deeply nested rows).

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia dalla gestione da parte di GenericDialect delle definizioni di tipo annidate e di parse_optional_type_modifiers, quindi riproduci la query fornita per confermare il fallimento di Decimal(14,2). Traccia il modo in cui vengono analizzati i tipi ROW annidati e aggiungi una copertura di regressione che dimostri che la query viene analizzata correttamente con i relativi modificatori di tipo annidati.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
rust, sql
Ambito
compilers, databases
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.