mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-08-10 09:18:00 +00:00
added support for expressions with parentheses
This commit is contained in:
parent
335607f6bb
commit
94df7c22e6
2 changed files with 31 additions and 1 deletions
|
@ -153,7 +153,14 @@ impl Parser {
|
||||||
Token::DoubleQuotedString(_) => {
|
Token::DoubleQuotedString(_) => {
|
||||||
self.prev_token();
|
self.prev_token();
|
||||||
self.parse_sql_value()
|
self.parse_sql_value()
|
||||||
|
},
|
||||||
|
Token::LParen => {
|
||||||
|
let expr = self.parse();
|
||||||
|
if !self.consume_token(&Token::RParen)? {
|
||||||
|
return parser_err!(format!("expected token RParen"));
|
||||||
}
|
}
|
||||||
|
expr
|
||||||
|
},
|
||||||
_ => parser_err!(format!(
|
_ => parser_err!(format!(
|
||||||
"Prefix parser expected a keyword but found {:?}",
|
"Prefix parser expected a keyword but found {:?}",
|
||||||
t
|
t
|
||||||
|
|
|
@ -334,6 +334,29 @@ fn parse_select_version() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn parse_parens() {
|
||||||
|
use self::ASTNode::*;
|
||||||
|
use self::SQLOperator::*;
|
||||||
|
let sql = "(a + b) - (c + d)";
|
||||||
|
let ast = parse_sql(&sql);
|
||||||
|
assert_eq!(
|
||||||
|
SQLBinaryExpr {
|
||||||
|
left: Box::new(SQLBinaryExpr {
|
||||||
|
left: Box::new(SQLIdentifier("a".to_string())),
|
||||||
|
op: Plus,
|
||||||
|
right: Box::new(SQLIdentifier("b".to_string()))
|
||||||
|
}),
|
||||||
|
op: Minus,
|
||||||
|
right: Box::new(SQLBinaryExpr {
|
||||||
|
left: Box::new(SQLIdentifier("c".to_string())),
|
||||||
|
op: Plus,
|
||||||
|
right: Box::new(SQLIdentifier("d".to_string()))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
, ast);
|
||||||
|
}
|
||||||
|
|
||||||
fn parse_sql(sql: &str) -> ASTNode {
|
fn parse_sql(sql: &str) -> ASTNode {
|
||||||
let dialect = GenericSqlDialect {};
|
let dialect = GenericSqlDialect {};
|
||||||
let mut tokenizer = Tokenizer::new(&dialect,&sql, );
|
let mut tokenizer = Tokenizer::new(&dialect,&sql, );
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue