`._name` after `)` or `]` fails with "Unexpected character '_'"
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 72/100
Piste de recherche
La défaillance se trouve dans Tokenizer::next_token : la vérification de ._ accepte un Token::Word qui précède, mais génère une erreur après RParen ou RBracket. Compare-la avec le bloc voisin qui traite déjà . après Word | RParen | RBracket | Number comme un point lorsque supports_tuple_element_access() est vrai. Exécute les quatre requêtes en échec de l'issue sous les dialectes indiqués, puis vérifie que SELECT (c).x et t._x sont toujours analysées correctement. C'est terminé lorsque les quatre requêtes sont analysées et que la vérification d'aller-retour (round-trip) réussit.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Field access with a name starting with _ fails to tokenize when it follows ) or ]:
SELECT (c)._x FROM tt (PostgreSqlDialect)
-> sql parser error: Unexpected character '_' at Line: 1, Column: 11
SELECT ({'_x': 1})._x (DuckDbDialect)
-> Unexpected character '_' at Line: 1, Column: 19
SELECT ([{'_a': 2}])[1]._a (DuckDbDialect)
-> Unexpected character '_' at Line: 1, Column: 24
SELECT f()._x (BigQueryDialect)
-> Unexpected character '_' at Line: 1, Column: 11
SELECT (c).x FROM tt, SELECT t._x FROM t
-> parse (fine)
PostgreSQL 18 runs SELECT (c)._x FROM tt for a composite column with a field _x (https://www.postgresql.org/docs/current/rowtypes.html#ROWTYPES-ACCESSING), and DuckDB runs SELECT ({'_x': 1})._x, ([{'_a': 2}])[1]._a (returns 1 | 2).
In Tokenizer::next_token, the ._ check only accepts a preceding Token::Word; after RParen or RBracket it errors. The block right after it already treats . after Word | RParen | RBracket | Number as a period when supports_tuple_element_access(). Related: #1835 (added the check), #2677 (whitespace case).
Tested on main ce12f1f6 (also 0.63.0 and 0.58.0).
Found with a property-based fuzzer (round trip check); I used AI assistance for triage and verified every case above.
- Langage dominant
- Rust
- Étoiles
- 3.5k
- Forks
- 801
- Merge moyen
- 2 j 19 h
- PR mergées (30 j)
- 108
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Aucun guide de contribution
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
-
DuckDB Prolific Author
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
apache/datafusion-sqlparser-rs#2807 ·
Les mainteneurs répondent en général sous 1 jour
-
Databricks Prolific Author Spark
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
apache/datafusion-sqlparser-rs#2801 ·
Les mainteneurs répondent en général sous 1 jour
-
PostgreSQL: support FOR NO KEY UPDATE and FOR KEY SHARE row-locking clausesPeut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. OuvertePostgreSQL
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
apache/datafusion-sqlparser-rs#2778 ·
Les mainteneurs répondent en général sous 1 jour
-
`SHOW ... ILIKE '<pattern>'` is displayed without quotesPeut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. OuverteProlific Author
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
apache/datafusion-sqlparser-rs#2759 ·
Les mainteneurs répondent en général sous 1 jour
-
Should `DELETE + LIMIT` be supported by the generic dialect ?Peut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. OuverteDuckDB MySQL PostgreSQL
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
apache/datafusion-sqlparser-rs#2615 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de apache/datafusion-sqlparser-rs
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
fritzprix/libr-agent#2612 ·
Les mainteneurs répondent en général sous 1 jour
-
crate: spate-core priority: low
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
NSPG13/agent-bounties#1749 ·
Les mainteneurs répondent en général sous 1 jour
-
area: web bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
kinqsradio/orbyn-engineering#227 ·
Les mainteneurs répondent en général sous 1 jour
-
移动端下载页实时吞吐与筛选栏滚动层级不一致Ouverteenhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour