apache / apache/datafusion-sqlparser-rs

INSERT from SELECT cannot be parsed with an ON CONFLICT clause

Ouverte
#1,987 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Rust
Étoiles
3.5k
Forks
772
Merge moyen
4 j 9 h
PR mergées (30 j)
17

Description

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.

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Reproduisez la requête INSERT ... SELECT ... ON CONFLICT fournie via l’analyseur SQL, en vérifiant à la fois les dialectes Generic et PostgreSQL et en la comparant à la forme entre parenthèses. Suivez le point d’entrée de l’analyse de l’instruction INSERT et confirmez que la forme sans parenthèses est acceptée, tout en veillant à ce que les cas existants restent valides.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
rust, sql
Domaine
compilers
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
48/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.