apache / apache/datafusion-sqlparser-rs
Can't parse jsonb extractions in an on conflict in Postgres
- Vorherrschende Sprache
- Rust
- Sterne
- 3.5k
- Forks
- 772
- Ø Merge
- 4 T. 9 Std.
- Gemergte PRs (30 T.)
- 17
Beschreibung
The parser does not support the following:
```sql
INSERT INTO table_with_constraint_over_jsonb (a_number, a_jsonb, a_string)
VALUES ($1, $2, $3)
ON CONFLICT (a_number, (a_jsonb->>'name'))
DO UPDATE SET a_string = EXCLUDED.a_string
RETURNING *;
```
It errors on the `(a_jsonb->>'name')` part with the error: `ParserError("Expected: identifier, found: ( at Line: 1, Column: 119")`.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginne damit, den Parserfehler mit der SQL-Anweisung aus dem Issue zu reproduzieren, wobei du dich auf die eingeklammerte jsonb-Extraktion im ON CONFLICT-Ziel konzentrierst. Verfolge anschließend die Verarbeitung von ON CONFLICT-Ausdrücken durch den SQL-Parser und überprüfe dann, dass diese Anweisung erfolgreich geparst wird, ohne andere Conflict-Ziele zu beeinträchtigen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- postgres, rust, sql
- Bereich
- compilers, databases
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 48/100