diff --git a/src/sqlparser.rs b/src/sqlparser.rs index adf53605..057eb34b 100644 --- a/src/sqlparser.rs +++ b/src/sqlparser.rs @@ -194,9 +194,9 @@ impl Parser { self.parse_sql_value() } Token::LParen => { - let expr = self.parse_expr(); // TBD (1) + let expr = self.parse_expr()?; self.expect_token(&Token::RParen)?; - expr + Ok(ASTNode::SQLNested(Box::new(expr))) } _ => parser_err!(format!( "Prefix parser expected a keyword but found {:?}", diff --git a/tests/sqlparser_generic.rs b/tests/sqlparser_generic.rs index afca54e7..b2d48f56 100644 --- a/tests/sqlparser_generic.rs +++ b/tests/sqlparser_generic.rs @@ -420,22 +420,21 @@ fn parse_parens() { use self::ASTNode::*; use self::SQLOperator::*; let sql = "(a + b) - (c + d)"; - let ast = parse_sql_expr(&sql); assert_eq!( SQLBinaryExpr { - left: Box::new(SQLBinaryExpr { + left: Box::new(SQLNested(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 { + right: Box::new(SQLNested(Box::new(SQLBinaryExpr { left: Box::new(SQLIdentifier("c".to_string())), op: Plus, right: Box::new(SQLIdentifier("d".to_string())) - }) + }))) }, - ast + verified_expr(sql) ); }