apache / apache/datafusion-sqlparser-rs

[Postgres]: `?` JSON operator cannot be parsed without a space after the field name

未關閉
#1,992 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
主要語言
Rust
星號
3.5k
分支
772
平均合併
4 天 9 小時
30 天內合併 PR
17

描述

When using `PostgreSqlDialect`, the question mark cannot be parsed if it is not followed by a space, whereas postgres accepts the query. The following code panics when parsing `broken`:

```rust
fn main() {
let broken = r#"SELECT user?'adress' FROM my_table"#;
let working = r#"SELECT user? 'adress' FROM my_table"#;

let working_parsed =
sqlparser::parser::Parser::parse_sql(&sqlparser::dialect::PostgreSqlDialect {}, working)
.expect("Failed to parse SQL query");
println!("{:?}", working_parsed);

let broken_parsed =
sqlparser::parser::Parser::parse_sql(&sqlparser::dialect::PostgreSqlDialect {}, broken)
.expect("Failed to parse SQL query");
println!("{:?}", broken_parsed);
}
```

貢獻指南

這個儲存庫沒有索引到貢獻指南

研究方向

首先執行隨附的 Parser::parse_sql 範例並使用 PostgreSqlDialect,比較兩種查詢形式。追蹤解析器如何處理欄位名稱旁邊的 ?,然後為兩種空格形式新增覆蓋,並確認 PostgreSQL JSON 運算子解析時不會 panic。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
postgresql, rust
領域
compilers, databases
Issue 類型
缺陷
難度
3/5
預估耗時
1-2 天
活躍度
停滯
描述清晰度
基本清楚
新手友好度
55/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。