apache / apache/datafusion-sqlparser-rs

`Parser::parse_query` doesn't detect wildcard syntax errors

未关闭
#404 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Rust
星标
3.5k
派生
772
平均合并
4 天 9 小时
30 天内合并 PR
17

描述

For some reason `Parser::parse_query` thinks the following are valid queries (whereas `Parser::parse_sql` correctly detects them as syntax errors):

```
SELECT * as foo FROM bar;
SELECT * foo FROM bar;
SELECT * 5 FROM bar;
```

Code to reproduce:

```rust
use sqlparser::{dialect::AnsiDialect, parser::Parser, tokenizer::Tokenizer};

fn main() {
let dialect = AnsiDialect {};
let bogus_query = "SELECT * as foo";

// Parser::parse_sql fails as expected with:
// ParserError("Expected end of statement, found: as")
assert!(Parser::parse_sql(&dialect, bogus_query).is_err());

// Parser::parse_query however does not detect the syntax error
let tokens = Tokenizer::new(&dialect, bogus_query).tokenize().unwrap();
let mut parser = Parser::new(tokens, &dialect);
assert!(parser.parse_query().is_ok());
}
```

贡献指南

这个仓库没有索引到贡献指南

调研方向

Start at Parser::parse_query and compare its behavior with Parser::parse_sql using the supplied Rust reproduction and Tokenizer setup. Trace how the three malformed SELECT queries are handled, then add regression coverage so parse_query rejects each wildcard syntax error while valid queries continue to parse.

由索引模型根据 Issue 内容生成。

评估

技术栈
rust
领域
compilers, databases
Issue 类型
缺陷
难度
3/5
预计耗时
1-2 天
活跃度
停滞
描述清晰度
描述清楚
新手友好度
68/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。