apache / apache/datafusion-sqlparser-rs
Support `COLUMNS(* EXLCUDE(col1, col2))` syntax
- Vorherrschende Sprache
- Rust
- Sterne
- 3.5k
- Forks
- 772
- Ø Merge
- 4 T. 9 Std.
- Gemergte PRs (30 T.)
- 17
Beschreibung
DuckDB supports excluding columns via this syntax:
```
SELECT COLUMNS(* EXCLUDE(col1, col2)) FROM tbl
```
Currently this format gives a syntax error:
```
Parse error: sql parser error: Expected: ), found: EXCLUDE at Line: 1, Column: 18
```
More details at: https://duckdb.org/docs/stable/sql/expressions/star.html#columns-expression
Note that other modifiers beyond `EXCLUDE` are supported, such as `REPLACE`, `RENAME`, `LIKE` etc, see the syntax diagram at https://duckdb.org/docs/stable/sql/query_syntax/select.html#syntax (click `star-options` on the digram to expand).
This highly suggests that the general solution for this would be to add a new `Expr::Columns` expression enum with parsing logic somewhat similiar to `Expr::MatchAgainst`, and then add logic in `parse_select_item` to support returning a `SelectItem::UnnamedExpr(Expr::Columns)`.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginnen Sie bei parse_select_item und vergleichen Sie den Parsing-Pfad für Expr::MatchAgainst. Fügen Sie Unterstützung für einen Expr::Columns-Ausdruck hinzu, der als SelectItem::UnnamedExpr(Expr::Columns) zurückgegeben wird, und überprüfen Sie, dass die dokumentierte Form COLUMNS(* EXCLUDE(...)) sowie die aufgeführten Modifikatoren REPLACE, RENAME und LIKE erfolgreich geparst werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- rust, sql
- Bereich
- compilers
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 45/100