apache / apache/datafusion-sqlparser-rs

INSERT from SELECT cannot be parsed with an ON CONFLICT clause

Offen
#1,987 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Rust
Sterne
3.5k
Forks
772
Ø Merge
4 T. 9 Std.
Gemergte PRs (30 T.)
17

Beschreibung

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.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Reproduzieren Sie die bereitgestellte INSERT ... SELECT ... ON CONFLICT-Abfrage über den SQL-Parser, prüfen Sie dabei sowohl den Generic- als auch den PostgreSQL-Dialekt und vergleichen Sie sie mit der eingeklammerten Form. Verfolgen Sie den Einstiegspunkt für das Parsen der INSERT-Anweisung und bestätigen Sie, dass die Form ohne Klammern akzeptiert wird, während bestehende Fälle weiterhin gültig bleiben.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rust, sql
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.