Skip to content

Commit effcf5c

Browse files
committed
The XOR binary operator is specific to MySQL; move its test to mysql-specific tests.
1 parent 759cf09 commit effcf5c

File tree

2 files changed

+39
-38
lines changed

2 files changed

+39
-38
lines changed

tests/sqlparser_common.rs

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1919,44 +1919,6 @@ fn parse_binary_all() {
19191919
);
19201920
}
19211921

1922-
#[test]
1923-
fn parse_logical_xor() {
1924-
let sql = "SELECT true XOR true, false XOR false, true XOR false, false XOR true";
1925-
let select = verified_only_select(sql);
1926-
assert_eq!(
1927-
SelectItem::UnnamedExpr(Expr::BinaryOp {
1928-
left: Box::new(Expr::Value(Value::Boolean(true))),
1929-
op: BinaryOperator::Xor,
1930-
right: Box::new(Expr::Value(Value::Boolean(true))),
1931-
}),
1932-
select.projection[0]
1933-
);
1934-
assert_eq!(
1935-
SelectItem::UnnamedExpr(Expr::BinaryOp {
1936-
left: Box::new(Expr::Value(Value::Boolean(false))),
1937-
op: BinaryOperator::Xor,
1938-
right: Box::new(Expr::Value(Value::Boolean(false))),
1939-
}),
1940-
select.projection[1]
1941-
);
1942-
assert_eq!(
1943-
SelectItem::UnnamedExpr(Expr::BinaryOp {
1944-
left: Box::new(Expr::Value(Value::Boolean(true))),
1945-
op: BinaryOperator::Xor,
1946-
right: Box::new(Expr::Value(Value::Boolean(false))),
1947-
}),
1948-
select.projection[2]
1949-
);
1950-
assert_eq!(
1951-
SelectItem::UnnamedExpr(Expr::BinaryOp {
1952-
left: Box::new(Expr::Value(Value::Boolean(false))),
1953-
op: BinaryOperator::Xor,
1954-
right: Box::new(Expr::Value(Value::Boolean(true))),
1955-
}),
1956-
select.projection[3]
1957-
);
1958-
}
1959-
19601922
#[test]
19611923
fn parse_between() {
19621924
fn chk(negated: bool) {

tests/sqlparser_mysql.rs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2817,3 +2817,42 @@ fn test_group_concat() {
28172817
mysql_and_generic()
28182818
.verified_expr("GROUP_CONCAT(DISTINCT test_score ORDER BY test_score DESC SEPARATOR ' ')");
28192819
}
2820+
2821+
/// The XOR binary operator is only supported in MySQL
2822+
#[test]
2823+
fn parse_logical_xor() {
2824+
let sql = "SELECT true XOR true, false XOR false, true XOR false, false XOR true";
2825+
let select = mysql_and_generic().verified_only_select(sql);
2826+
assert_eq!(
2827+
SelectItem::UnnamedExpr(Expr::BinaryOp {
2828+
left: Box::new(Expr::Value(Value::Boolean(true))),
2829+
op: BinaryOperator::Xor,
2830+
right: Box::new(Expr::Value(Value::Boolean(true))),
2831+
}),
2832+
select.projection[0]
2833+
);
2834+
assert_eq!(
2835+
SelectItem::UnnamedExpr(Expr::BinaryOp {
2836+
left: Box::new(Expr::Value(Value::Boolean(false))),
2837+
op: BinaryOperator::Xor,
2838+
right: Box::new(Expr::Value(Value::Boolean(false))),
2839+
}),
2840+
select.projection[1]
2841+
);
2842+
assert_eq!(
2843+
SelectItem::UnnamedExpr(Expr::BinaryOp {
2844+
left: Box::new(Expr::Value(Value::Boolean(true))),
2845+
op: BinaryOperator::Xor,
2846+
right: Box::new(Expr::Value(Value::Boolean(false))),
2847+
}),
2848+
select.projection[2]
2849+
);
2850+
assert_eq!(
2851+
SelectItem::UnnamedExpr(Expr::BinaryOp {
2852+
left: Box::new(Expr::Value(Value::Boolean(false))),
2853+
op: BinaryOperator::Xor,
2854+
right: Box::new(Expr::Value(Value::Boolean(true))),
2855+
}),
2856+
select.projection[3]
2857+
);
2858+
}

0 commit comments

Comments
 (0)