apache / apache/datafusion-sqlparser-rs
Nested type modifiers/complex type
- Vorherrschende Sprache
- Rust
- Sterne
- 3.5k
- Forks
- 772
- Ø Merge
- 4 T. 9 Std.
- Gemergte PRs (30 T.)
- 17
Beschreibung
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).
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginne bei der Behandlung verschachtelter Typdefinitionen durch GenericDialect und parse_optional_type_modifiers und reproduziere dann die bereitgestellte Abfrage, um den Fehler bei Decimal(14,2) zu bestätigen. Verfolge, wie verschachtelte ROW-Typen geparst werden, und füge eine Regressionstestabdeckung hinzu, die zeigt, dass die Abfrage mit ihren verschachtelten Typmodifikatoren erfolgreich geparst wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- rust, sql
- Bereich
- compilers, databases
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100