s5dsn-eqee opened a new issue, #2599:
URL: https://github.com/apache/datafusion-sqlparser-rs/issues/2599

   ### 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
   
   ```rust
   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.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to