mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-07-16 04:54:59 +00:00
Implement ASSERT statement (#226)
As supported by PostgreSQL and BigQuery (with some differences between them)
This commit is contained in:
parent
5cab18963e
commit
c24b0e01db
4 changed files with 78 additions and 0 deletions
|
@ -1156,6 +1156,46 @@ fn parse_create_table_with_multiple_on_delete_fails() {
|
|||
.expect_err("should have failed");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_assert() {
|
||||
let sql = "ASSERT (SELECT COUNT(*) FROM table) > 0";
|
||||
let ast = one_statement_parses_to(sql, "ASSERT (SELECT COUNT(*) FROM table) > 0");
|
||||
match ast {
|
||||
Statement::Assert {
|
||||
condition: _condition,
|
||||
separator,
|
||||
message,
|
||||
} => {
|
||||
assert_eq!(message, None);
|
||||
assert_eq!(separator, "");
|
||||
}
|
||||
_ => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_assert_message() {
|
||||
let sql = "ASSERT (SELECT COUNT(*) FROM table) > 0 AS 'No rows in table'";
|
||||
let ast = one_statement_parses_to(
|
||||
sql,
|
||||
"ASSERT (SELECT COUNT(*) FROM table) > 0 AS 'No rows in table'",
|
||||
);
|
||||
match ast {
|
||||
Statement::Assert {
|
||||
condition: _condition,
|
||||
message: Some(message),
|
||||
separator,
|
||||
} => {
|
||||
assert_eq!(separator, "AS");
|
||||
match message {
|
||||
Expr::Value(Value::SingleQuotedString(s)) => assert_eq!(s, "No rows in table"),
|
||||
_ => unreachable!(),
|
||||
};
|
||||
}
|
||||
_ => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_create_schema() {
|
||||
let sql = "CREATE SCHEMA X";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue