apache / apache/datafusion-sqlparser-rs

IDENTIFIER literal with double quotes inside single quotes is parsed as one token instead of multiple identifiers

Đang mở
#2,048 0 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ả

When running the following statement:

CREATE TABLE IDENTIFIER('"ORGDATA"."PUBLIC"."car_sales"')

the parser produces:

SingleQuotedString("\"ORGDATA\".\"PUBLIC\".\"car_sales\"")

It is treated as a single token (a literal string) instead of being parsed into three separate identifiers ("ORGDATA", "PUBLIC", "car_sales").
Since the IDENTIFIER function expects a literal, the content must be re-parsed.

**Suggestions:**

1. Expose a function that can take a SingleQuotedString like: '"ORGDATA"."PUBLIC"."car_sales"' and re-parse it into separate Ident tokens (ORGDATA, PUBLIC, car_sales).

2. change the tokenizer so that when IDENTIFIER is used with a quoted string containing double quotes, the inner content is tokenized as identifiers rather than treated as a raw single string.

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 truy vết cách parser xử lý CREATE TABLE IDENTIFIER(...) và cách các giá trị SingleQuotedString đến được hàm IDENTIFIER hoặc tokenizer. Tái hiện ví dụ và xác định liệu kết quả dự kiến có phải là ba identifier được đặt trong dấu nháy hay không; được xem là hoàn tất khi input không còn được xử lý như một literal duy nhất và hành vi parsing hiện có vẫn được giữ nguyên.

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
Lĩnh vực
compilers
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 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
45/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.