apache / apache/datafusion-sqlparser-rs

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

Open
#404 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
3.5k
Forks
772
Avg merge
4d 9h
Merged PRs (30d)
17

Description

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());
}
```

Contributor guide

No contributing guide indexed for this repository

Research direction

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.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
compilers, databases
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.