apache / apache/datafusion-sqlparser-rs

Always wrap statement in a named struct

Aberta
#1,204 5 comentários 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
Rust
Estrelas
3.5k
Forks
772
Merge médio
4d 9h
PRs com merge (30d)
17

Descrição

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

Guia de contribuição

Nenhum guia de contribuição indexado para este repositório

Direção de pesquisa

Comece revisando as definições de statements no sqlparser AST e o wrapper downstream mostrado em src/sql/src/statements/delete.rs do GreptimeDB. Verifique como o código downstream implementa ou consome Display e outras traits do AST e, em seguida, determine o impacto de compatibilidade de envolver cada variante de statement. Considera-se concluído quando houver um design documentado ou um plano de implementação aceito que trate das questões de reutilização e breaking changes.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
rust, sql
Domínio
compilers
Tipo de issue
Funcionalidade
Dificuldade
5/5
Tempo estimado
Mais de uma semana
Status de atividade
Estagnada
Clareza
Precisa de esclarecimento
Facilidade para iniciantes
25/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.