ClickHouse: tuple element access followed by a field changes meaning after round-trip
Les mainteneurs répondent en général sous 2 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 78/100
Piste de recherche
Commencez par l’implémentation de Display du dialecte ClickHouse et la cible fuzz_parse_roundtrip, en utilisant la reproduction SELECT t.1.name comme cas de départ. Comparez le SQL affiché avec la chaîne d’accès espacée attendue et vérifiez que le nouvel analyse syntaxique produit le même AST ; src/Parsers/Lexer.cpp fournit le contexte de désambiguïsation du lexer.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- Rust
- Étoiles
- 3.5k
- Forks
- 774
- Merge moyen
- 3 j 23 h
- PR mergées (30 j)
- 53
Préparer son environnement
Nous n'avons pas encore vérifié les fichiers d'installation de ce projet. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de apache/datafusion-sqlparser-rs
-
ClickHouse
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
apache/datafusion-sqlparser-rs#2597 ·
Les mainteneurs répondent en général sous 2 jours
-
Hive
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
apache/datafusion-sqlparser-rs#2589 ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
apache/datafusion-sqlparser-rs#2461 · 2 commentaires ·
Les mainteneurs répondent en général sous 2 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 73/100
apache/datafusion-sqlparser-rs#2407 ·
Les mainteneurs répondent en général sous 2 jours
-
Add SQL/PGQ keywordsOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
apache/datafusion-sqlparser-rs#2393 ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de apache/datafusion-sqlparser-rs
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 3 jours
-
state:triage-needed
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Automattic/harper#4503 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 92/100
tobi/walgit#84 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours