mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-11-02 07:57:53 +00:00
Support DROP CONSTRAINT [ IF EXISTS ] <name> [ CASCADE ] (#396)
* adding support for DROP CONSTRAINT [ IF EXISTS ] <name> * implementing [ CASCADE ] for DROP CONSTRAINT
This commit is contained in:
parent
e4959696b5
commit
c4cbc8340a
3 changed files with 76 additions and 3 deletions
|
|
@ -2077,6 +2077,54 @@ fn parse_alter_table_alter_column_type() {
|
|||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_alter_table_drop_constraint() {
|
||||
let alter_stmt = "ALTER TABLE tab";
|
||||
match verified_stmt("ALTER TABLE tab DROP CONSTRAINT constraint_name CASCADE") {
|
||||
Statement::AlterTable {
|
||||
name,
|
||||
operation:
|
||||
AlterTableOperation::DropConstraint {
|
||||
name: constr_name,
|
||||
if_exists,
|
||||
cascade,
|
||||
},
|
||||
} => {
|
||||
assert_eq!("tab", name.to_string());
|
||||
assert_eq!("constraint_name", constr_name.to_string());
|
||||
assert!(!if_exists);
|
||||
assert!(cascade);
|
||||
}
|
||||
_ => unreachable!(),
|
||||
}
|
||||
match verified_stmt("ALTER TABLE tab DROP CONSTRAINT IF EXISTS constraint_name") {
|
||||
Statement::AlterTable {
|
||||
name,
|
||||
operation:
|
||||
AlterTableOperation::DropConstraint {
|
||||
name: constr_name,
|
||||
if_exists,
|
||||
cascade,
|
||||
},
|
||||
} => {
|
||||
assert_eq!("tab", name.to_string());
|
||||
assert_eq!("constraint_name", constr_name.to_string());
|
||||
assert!(if_exists);
|
||||
assert!(!cascade);
|
||||
}
|
||||
_ => unreachable!(),
|
||||
}
|
||||
|
||||
let res = Parser::parse_sql(
|
||||
&GenericDialect {},
|
||||
&format!("{} DROP CONSTRAINT is_active TEXT", alter_stmt),
|
||||
);
|
||||
assert_eq!(
|
||||
ParserError::ParserError("Expected end of statement, found: TEXT".to_string()),
|
||||
res.unwrap_err()
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_bad_constraint() {
|
||||
let res = parse_sql_statements("ALTER TABLE tab ADD");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue