`._name` after `)` or `]` fails with "Unexpected character '_'"
維護者通常 1 天內回覆
還沒有人認領這個 Issue。
評估
研究方向
故障位於 Tokenizer::next_token:._ 檢查接受前面的 Token::Word,但在 RParen 或 RBracket 之後會報錯。請與附近的程式區塊比對,該區塊在 supports_tuple_element_access() 成立時,已將 Word | RParen | RBracket | Number 之後的 . 視為句點。在所列方言下執行 issue 中的四個失敗查詢,然後確認 SELECT (c).x 和 t._x 仍能正常解析。四個查詢都能解析且往返檢查通過即為完成。
由索引模型根據 Issue 內容生成。
描述
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.
- 主要語言
- Rust
- 星號
- 3.5k
- 分支
- 801
- 平均合併
- 2 天 19 小時
- 30 天內合併 PR
- 108
環境準備
- 沒有 Dockerfile 或 Docker Compose 檔案
- 有 Pull Request 範本
- 沒有貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
apache/datafusion-sqlparser-rs 的其他 Issue
-
DuckDB Prolific Author
難度 2/5 1-3 小時 新手友好度 70/100
apache/datafusion-sqlparser-rs#2807 ·
維護者通常 1 天內回覆
-
Databricks Prolific Author Spark
難度 2/5 1-3 小時 新手友好度 68/100
apache/datafusion-sqlparser-rs#2801 ·
維護者通常 1 天內回覆
-
PostgreSQL: support FOR NO KEY UPDATE and FOR KEY SHARE row-locking clauses可能重新可做 關聯的 PR 已關閉且未合併。 未關閉PostgreSQL
難度 2/5 1-3 小時 新手友好度 76/100
apache/datafusion-sqlparser-rs#2778 ·
維護者通常 1 天內回覆
-
`SHOW ... ILIKE '<pattern>'` is displayed without quotes可能重新可做 關聯的 PR 已關閉且未合併。 未關閉Prolific Author
難度 2/5 1-3 小時 新手友好度 75/100
apache/datafusion-sqlparser-rs#2759 ·
維護者通常 1 天內回覆
-
Should `DELETE + LIMIT` be supported by the generic dialect ?可能重新可做 關聯的 PR 已關閉且未合併。 未關閉DuckDB MySQL PostgreSQL
難度 2/5 1-3 小時 新手友好度 68/100
apache/datafusion-sqlparser-rs#2615 ·
維護者通常 1 天內回覆
查看 apache/datafusion-sqlparser-rs 的全部 Issue
相似的 Issue
-
A match arm above the largest i64 is compared as 0可能已有人在做 關聯的 PR 仍在進行中或已合併。 未關閉
難度 2/5 1-3 小時 新手友好度 86/100
維護者通常 1 天內回覆
-
難度 1/5 1 小時以內 新手友好度 83/100
DioxusLabs/dioxus#6063 ·
維護者通常 1 天內回覆
-
`nsh-core` fails to compile when taffy's default `calc` feature is enabled elsewhere in the graph未關閉
難度 2/5 1-3 小時 新手友好度 76/100
longbridge/nsh#966 ·
維護者通常 1 天內回覆
-
Windows docs: pin a tested ConPTY version for Kitty graphics; 1.25.260930003 corrupts large uploads未關閉
難度 1/5 1-3 小時 新手友好度 88/100
raphamorim/rio#2021 ·
維護者通常 1 天內回覆
-
documentation
難度 2/5 1-3 小時 新手友好度 78/100
non7top/sigstore-shell#38 ·
維護者通常 1 天內回覆