apache / apache/datafusion-sqlparser-rs
Always wrap statement in a named struct
- Vorherrschende Sprache
- Rust
- Sterne
- 3.5k
- Forks
- 772
- Ø Merge
- 4 T. 9 Std.
- Gemergte PRs (30 T.)
- 17
Beschreibung
In [GreptimeDB](https://github.com/GreptimeTeam/greptimedb/blob/v0.7.1/src/sql/src/statements/delete.rs), we write code like:
```rust
#[derive(Debug, Clone, PartialEq, Eq, Visit, VisitMut)]
pub struct Delete {
// Can only be sqlparser::ast::Statement::Delete variant
pub inner: Statement,
}
```
It's because in sqlparser-rs, these statement variants are unnamed struct:
```rust
Delete {
/// Multi tables delete are supported in mysql
tables: Vec,
/// FROM
from: Vec,
/// USING (Snowflake, Postgres, MySQL)
using: Option>,
/// WHERE
selection: Option,
/// RETURNING
returning: Option>,
},
```
I wonder if we can always wrap statement in a named struct so that downstream software can reuse the AST and impls (like for Display) more smoothly.
I don't know if it's a breaking change or we're generally OK with this.
Ref - https://github.com/GreptimeTeam/greptimedb/issues/3646
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginne damit, die Definitionen der Statements im sqlparser AST und den nachgelagerten Wrapper in GreptimeDBs src/sql/src/statements/delete.rs zu prüfen. Untersuche, wie nachgelagerter Code Display und andere AST-Traits implementiert oder verwendet, und ermittle dann die Kompatibilitätsauswirkungen des Wrappens jeder Statement-Variante. Als abgeschlossen gilt die Aufgabe, wenn ein dokumentiertes Design oder ein akzeptierter Implementierungsplan vorliegt, der die Belange der Wiederverwendung und mögliche Breaking Changes berücksichtigt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- rust, sql
- Bereich
- compilers
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Muss geklärt werden
- Anfängerfreundlichkeit
- 25/100