You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ClickHouse: tuple element access followed by a field changes meaning after round-trip #2599
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.namelet reparsed = Parser::parse_sql(&ClickHouseDialect{},&printed).unwrap();println!("{}", reparsed[0]);// SELECT t . 1. AS name
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.
Activity