apache / apache/datafusion-sqlparser-rs

Cannot parse table alias or cte alias in Postgres dialect

Đang mở
#1,069 4 bình luận 0 reaction 0 người được giao Xem trên GitHub
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ả

Sorry for bothering you.
I'm using sqlparser = "0.40.0"
This is my code:
```rust
use sqlparser::dialect::PostgreSqlDialect;
use sqlparser::parser::{Parser, ParserError};

fn main() {
let dialect = PostgreSqlDialect {};

let sql1 = r#"
WITH existing AS (SELECT test_table.id FROM test_tables AS test_table WHERE (a = 12) AND (b = 34)),
inserted AS (INSERT INTO test_tables AS test_table (id, a, b, c) VALUES (DEFAULT, 56, 78, 90) ON CONFLICT (a, b)
DO UPDATE SET c = EXCLUDED.c WHERE (test_table.c != EXCLUDED.c)) SELECT c FROM existing"#;

let sql2 = "INSERT INTO test_tables AS test_table (id, a) VALUES (DEFAULT, 123) ON CONFLICT DO NOTHING RETURNING id";

let ast1 = Parser::parse_sql(&dialect, sql1);
match ast1 {
Ok(_) => {

}
Err(e) => {
println!("fail ast1: {}", e);
}
}
let ast2 = Parser::parse_sql(&dialect, sql2);
match ast2 {
Ok(_) => {
}
Err(e) => {
println!("fail ast2: {}", e);
}
}
}
```
error output:
```bash
fail ast1: sql parser error: Expected SELECT, VALUES, or a subquery in the query body, found: AS at Line: 3, Column 43
fail ast2: sql parser error: Expected SELECT, VALUES, or a subquery in the query body, found: AS at Line: 1, Column 25
```

Thank you!

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 với các lệnh gọi PostgreSqlDialect và Parser::parse_sql trong reproducer, chạy cả sql1 và sql2 để xác nhận các lỗi phân tích cú pháp alias. Theo dõi cách các câu lệnh INSERT và phần thân truy vấn CTE xử lý alias; hoàn thành khi cả hai câu lệnh PostgreSQL đều được phân tích cú pháp thành công mà không có các lỗi đã báo cáo.

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
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
42/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.