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]