apache / apache/datafusion-sqlparser-rs

INSERT from SELECT cannot be parsed with an ON CONFLICT clause

Aberta
#1,987 0 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

Parsing the following SQL
```sql
INSERT INTO foo
SELECT 1, 'data'
ON CONFLICT DO NOTHING
```
fails with
```
Expected: end of statement, found: CONFLICT at Line: 3, Column: 6
```
both for Generic and PostgreSQL dialects.

However, at least in PostgreSQL it seems to be a valid construct, equivalent to
```sql
INSERT INTO foo
(SELECT 1, 'data')
ON CONFLICT DO NOTHING
```
(this one is parsed by `sqlparser` correctly).

The same query without the "ON CONFLICT" clause can be successfully parsed too.

Guia de contribuição

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

Direção de pesquisa

Reproduza a consulta INSERT ... SELECT ... ON CONFLICT fornecida por meio do parser SQL, verificando os dialetos Generic e PostgreSQL e comparando-a com a forma entre parênteses. Rastreie o ponto de entrada do parsing da instrução INSERT e confirme que a forma sem parênteses é aceita, enquanto os casos existentes continuam válidos.

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
Bug
Dificuldade
3/5
Tempo estimado
1-2 dias
Status de atividade
Estagnada
Clareza
Razoavelmente clara
Facilidade para iniciantes
48/100

Receba novas issues na sua caixa de entrada

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