apache / apache/datafusion-sqlparser-rs
Add Support for Postgres JSON prepared query
- 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ả
I am using sqlparser 0.4.0 with rust version 1.36.0
Query:
`
SELECT "emp"."id", "emp"."data" FROM "emp" WHERE id = $1 AND data->>'id'=$2 -- binds: ["emp_name", "123"]
`
Error:
`ParserError("Expected an expression, found: >")`
Dialect Used:
```rust
impl Dialect for MyPostgresSqlDialect {
fn is_identifier_start(&self, ch: char) -> bool {
(ch >= 'a' && ch <= 'z')
|| (ch >= 'A' && ch <= 'Z')
|| (ch == '@')
|| ch == '$'
|| ch == '_'
}
fn is_identifier_part(&self, ch: char) -> bool {
(ch >= 'a' && ch <= 'z')
|| (ch >= 'A' && ch <= 'Z')
|| (ch >= '0' && ch <= '9')
|| (ch == '@')
|| ch == '$'
|| ch == '_'
}
}
```
Even I am adding chars `-` and `>` into `is_identifier_part` then it is giving Error:: `ParserError("Expected end of statement, found: \'id\'")`
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
Bắt đầu bằng cách tái hiện truy vấn và lỗi đã được báo cáo với phương ngữ PostgreSQL, sau đó kiểm tra cách is_identifier_start và is_identifier_part xử lý toán tử trích xuất JSON và các placeholder của truy vấn đã chuẩn bị. Công việc được xem là hoàn tất khi truy vấn được phân tích cú pháp thành công mà không cần các ký tự định danh ad hoc, đồng thời có coverage cho biểu thức SQL được示示.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- postgresql, rust, sql
- Lĩnh vực
- databases
- 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
- 35/100