Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

ClickHouse: tuple element access followed by a field changes meaning after round-trip

Đang mở Phù hợp với người mới
#2,599 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 2 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
78/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
clickhouse, rust, sql
Lĩnh vực
databases

Hướng nghiên cứu

Bắt đầu với triển khai Display của dialect ClickHouse và target fuzz_parse_roundtrip, sử dụng reproduction SELECT t.1.name làm trường hợp khởi đầu. So sánh SQL được in ra với chuỗi truy cập có khoảng trắng như mong đợi và xác minh rằng việc parse lại tạo ra cùng một AST; src/Parsers/Lexer.cpp cung cấp ngữ cảnh để phân giải sự mơ hồ của lexer.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

ClickHouse
Description

With ClickHouseDialect, a tuple element access followed by a named field prints without spaces around the second dot. The printed SQL parses back as a different query, with no error.

Reproduction
use sqlparser::dialect::ClickHouseDialect;
use sqlparser::parser::Parser;

let sql = "SELECT t.1.name";
let ast = Parser::parse_sql(&ClickHouseDialect {}, sql).unwrap();
let printed = ast[0].to_string();
println!("{printed}"); // SELECT t . 1.name

let reparsed = Parser::parse_sql(&ClickHouseDialect {}, &printed).unwrap();
println!("{}", reparsed[0]); // SELECT t . 1. AS name
Step Result
Input SELECT t.1.name
Parsed CompoundFieldAccess { root: t, access_chain: [Dot(1), Dot(name)] } (correct)
Printed SELECT t . 1.name
Re-parsed SELECT t . 1. AS name: the number 1. with alias name
Expected

The printed output keeps the access chain, e.g. SELECT t . 1 . name, and parses back to the same AST.

Context

ClickHouse's lexer tokenizes t.1.name as t . 1 . name (see the "chained tuple access" disambiguation in src/Parsers/Lexer.cpp), so the initial parse is correct and only Display is wrong.

Follow-up to #2574 (tuple element access). Found with the fuzz_parse_roundtrip fuzz target.

Ngôn ngữ chính
Rust
Star
3.5k
Fork
774
Merge trung bình
3 ngày 23 giờ
Pull request đã merge (30 ngày)
53

Chuẩn bị môi trường

Chúng tôi chưa kiểm tra các tệp thiết lập môi trường của dự án này. Hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của apache/datafusion-sqlparser-rs

Tất cả issue của apache/datafusion-sqlparser-rs

Issue tương tự

Thêm issue về Rust

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.