apache / apache/datafusion-sqlparser-rs
`Parser::parse_query` doesn't detect wildcard syntax errors
- 主要言語
- Rust
- スター
- 3.5k
- フォーク
- 772
- 平均マージ
- 4日 9時間
- マージ済み PR(30日)
- 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