Add support for parsing RAISERROR (#1656)

This commit is contained in:
AvivDavid-Satori 2025-01-16 11:09:53 +02:00 committed by GitHub
parent 9105cae261
commit 474150006f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 128 additions and 0 deletions

View file

@ -1250,6 +1250,39 @@ fn parse_mssql_declare() {
);
}
#[test]
fn test_parse_raiserror() {
let sql = r#"RAISERROR('This is a test', 16, 1)"#;
let s = ms().verified_stmt(sql);
assert_eq!(
s,
Statement::RaisError {
message: Box::new(Expr::Value(Value::SingleQuotedString(
"This is a test".to_string()
))),
severity: Box::new(Expr::Value(Value::Number("16".parse().unwrap(), false))),
state: Box::new(Expr::Value(Value::Number("1".parse().unwrap(), false))),
arguments: vec![],
options: vec![],
}
);
let sql = r#"RAISERROR('This is a test', 16, 1) WITH NOWAIT"#;
let _ = ms().verified_stmt(sql);
let sql = r#"RAISERROR('This is a test', 16, 1, 'ARG') WITH SETERROR, LOG"#;
let _ = ms().verified_stmt(sql);
let sql = r#"RAISERROR(N'This is message %s %d.', 10, 1, N'number', 5)"#;
let _ = ms().verified_stmt(sql);
let sql = r#"RAISERROR(N'<<%*.*s>>', 10, 1, 7, 3, N'abcde')"#;
let _ = ms().verified_stmt(sql);
let sql = r#"RAISERROR(@ErrorMessage, @ErrorSeverity, @ErrorState)"#;
let _ = ms().verified_stmt(sql);
}
#[test]
fn parse_use() {
let valid_object_names = [