apache / apache/datafusion-sqlparser-rs
INSERT from SELECT cannot be parsed with an ON CONFLICT clause
- Ngôn ngữ chính
- Rust
- Star
- 3.5k
- Fork
- 772
- Merge trung bình
- 4 ngày 9 giờ
- Pull request đã merge (30 ngày)
- 17
Mô tả
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.
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Hướng nghiên cứu
Tái hiện truy vấn INSERT ... SELECT ... ON CONFLICT được cung cấp thông qua trình phân tích cú pháp SQL, kiểm tra cả hai dialect Generic và PostgreSQL, đồng thời so sánh với dạng có dấu ngoặc. Theo dõi điểm vào của việc phân tích cú pháp câu lệnh INSERT và xác nhận rằng dạng không có dấu ngoặc được chấp nhận, trong khi các trường hợp hiện có vẫn hợp lệ.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- rust, sql
- Lĩnh vực
- compilers
- Loại issue
- Lỗi
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 48/100