apache / apache/datafusion-sqlparser-rs

ClickHouse table function is recognized as TableFactor::Table

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

Descrição

See https://clickhouse.com/docs/sql-reference/table-functions.

For example:
```sql
SELECT * FROM test;
SELECT * FROM test();
```

They produce:

> pre_visit_table_factor: Table { name: ObjectName([Identifier(Ident { value: "test", quote_style: None, span: Span(Location(1,16)..Location(1,20)) })]), alias: None, args: None, with_hints: [], version: None, with_ordinality: false, partitions: [], json_path: None, sample: None, index_hints: [] }

and

> pre_visit_table_factor: Table { name: ObjectName([Identifier(Ident { value: "test", quote_style: None, span: Span(Location(1,16)..Location(1,20)) })]), alias: None, args: Some(TableFunctionArgs { args: [], settings: None }), with_hints: [], version: None, with_ordinality: false, partitions: [], json_path: None, sample: None, index_hints: [] }

The second version produces `args: Some(TableFunctionArgs { args: [], settings: None })`.

As I see it's because [`Function`](https://github.com/apache/datafusion-sqlparser-rs/blob/b8539a52af7419b86d9c2fc51ba247d022f7a6f8/src/parser/mod.rs#L13498) is only recognized after a `LATERAL` keyword, and [`TableFunction`](https://github.com/apache/datafusion-sqlparser-rs/blob/b8539a52af7419b86d9c2fc51ba247d022f7a6f8/src/parser/mod.rs#L13511) is only for the `TABLE()` syntax (but not for `ident()`).

Guia de contribuição

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

Direção de pesquisa

Comece em src/parser/mod.rs, no tratamento de Function e TableFunction vinculado na issue, e depois compare o parsing de SELECT * FROM test e SELECT * FROM test(). Confirme o comportamento concluído com uma saída do parser mostrando a forma ident() do ClickHouse devidamente distinguida de uma referência simples a tabela.

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

Avaliação

Stack de tecnologia
rust, sql
Domínio
compilers, databases
Tipo de issue
Bug
Dificuldade
3/5
Tempo estimado
1-2 dias
Status de atividade
Estagnada
Clareza
Razoavelmente clara
Facilidade para iniciantes
55/100

Receba novas issues na sua caixa de entrada

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