mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-12-04 03:31:39 +00:00
Move tests for "LIKE '%'" to sqlparser_generic.rs
...as this syntax is not specific to the PostgreSQL dialect. Also use verified() to assert that parsing + serializing results in the original SQL string.
This commit is contained in:
parent
d5109a2880
commit
9441f9c5d8
2 changed files with 40 additions and 44 deletions
|
|
@ -187,6 +187,46 @@ fn parse_is_not_null() {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn parse_like() {
|
||||||
|
let sql = String::from("SELECT * FROM customers WHERE name LIKE '%a'");
|
||||||
|
match verified(&sql) {
|
||||||
|
ASTNode::SQLSelect { selection, .. } => {
|
||||||
|
assert_eq!(
|
||||||
|
ASTNode::SQLBinaryExpr {
|
||||||
|
left: Box::new(ASTNode::SQLIdentifier("name".to_string())),
|
||||||
|
op: SQLOperator::Like,
|
||||||
|
right: Box::new(ASTNode::SQLValue(Value::SingleQuotedString(
|
||||||
|
"%a".to_string()
|
||||||
|
))),
|
||||||
|
},
|
||||||
|
*selection.unwrap()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
_ => assert!(false),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn parse_not_like() {
|
||||||
|
let sql = String::from("SELECT * FROM customers WHERE name NOT LIKE '%a'");
|
||||||
|
match verified(&sql) {
|
||||||
|
ASTNode::SQLSelect { selection, .. } => {
|
||||||
|
assert_eq!(
|
||||||
|
ASTNode::SQLBinaryExpr {
|
||||||
|
left: Box::new(ASTNode::SQLIdentifier("name".to_string())),
|
||||||
|
op: SQLOperator::NotLike,
|
||||||
|
right: Box::new(ASTNode::SQLValue(Value::SingleQuotedString(
|
||||||
|
"%a".to_string()
|
||||||
|
))),
|
||||||
|
},
|
||||||
|
*selection.unwrap()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
_ => assert!(false),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn parse_select_order_by() {
|
fn parse_select_order_by() {
|
||||||
let sql = String::from(
|
let sql = String::from(
|
||||||
|
|
|
||||||
|
|
@ -409,47 +409,3 @@ fn parser(sql: &str) -> Parser {
|
||||||
debug!("tokens: {:#?}", tokens);
|
debug!("tokens: {:#?}", tokens);
|
||||||
Parser::new(tokens)
|
Parser::new(tokens)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn parse_like() {
|
|
||||||
let sql = String::from("SELECT * FROM customers WHERE name LIKE '%a'");
|
|
||||||
let ast = parse_sql(&sql);
|
|
||||||
assert_eq!(sql, ast.to_string());
|
|
||||||
match ast {
|
|
||||||
ASTNode::SQLSelect { selection, .. } => {
|
|
||||||
assert_eq!(
|
|
||||||
ASTNode::SQLBinaryExpr {
|
|
||||||
left: Box::new(ASTNode::SQLIdentifier("name".to_string())),
|
|
||||||
op: SQLOperator::Like,
|
|
||||||
right: Box::new(ASTNode::SQLValue(Value::SingleQuotedString(
|
|
||||||
"%a".to_string()
|
|
||||||
))),
|
|
||||||
},
|
|
||||||
*selection.unwrap()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
_ => assert!(false),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn parse_not_like() {
|
|
||||||
let sql = String::from("SELECT * FROM customers WHERE name NOT LIKE '%a'");
|
|
||||||
let ast = parse_sql(&sql);
|
|
||||||
assert_eq!(sql, ast.to_string());
|
|
||||||
match ast {
|
|
||||||
ASTNode::SQLSelect { selection, .. } => {
|
|
||||||
assert_eq!(
|
|
||||||
ASTNode::SQLBinaryExpr {
|
|
||||||
left: Box::new(ASTNode::SQLIdentifier("name".to_string())),
|
|
||||||
op: SQLOperator::NotLike,
|
|
||||||
right: Box::new(ASTNode::SQLValue(Value::SingleQuotedString(
|
|
||||||
"%a".to_string()
|
|
||||||
))),
|
|
||||||
},
|
|
||||||
*selection.unwrap()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
_ => assert!(false),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue