apache / apache/datafusion-sqlparser-rs
[Postgres]: `?` JSON operator cannot be parsed without a space after the field name
- 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ả
When using `PostgreSqlDialect`, the question mark cannot be parsed if it is not followed by a space, whereas postgres accepts the query. The following code panics when parsing `broken`:
```rust
fn main() {
let broken = r#"SELECT user?'adress' FROM my_table"#;
let working = r#"SELECT user? 'adress' FROM my_table"#;
let working_parsed =
sqlparser::parser::Parser::parse_sql(&sqlparser::dialect::PostgreSqlDialect {}, working)
.expect("Failed to parse SQL query");
println!("{:?}", working_parsed);
let broken_parsed =
sqlparser::parser::Parser::parse_sql(&sqlparser::dialect::PostgreSqlDialect {}, broken)
.expect("Failed to parse SQL query");
println!("{:?}", broken_parsed);
}
```
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 chạy ví dụ Parser::parse_sql được cung cấp với PostgreSqlDialect và so sánh hai dạng truy vấn. Theo dõi cách parser xử lý ? bên cạnh tên trường, sau đó thêm coverage cho cả hai dạng khoảng trắng và xác nhận rằng toán tử JSON của PostgreSQL được parse mà không panic.
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
- Lĩnh vực
- compilers, 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
- 55/100