(
scx: &StatementContext,
if_exists: bool,
name: &Ident,
)
| 5522 | } |
| 5523 | |
| 5524 | fn plan_drop_role( |
| 5525 | scx: &StatementContext, |
| 5526 | if_exists: bool, |
| 5527 | name: &Ident, |
| 5528 | ) -> Result<Option<RoleId>, PlanError> { |
| 5529 | match scx.catalog.resolve_role(name.as_str()) { |
| 5530 | Ok(role) => { |
| 5531 | let id = role.id(); |
| 5532 | if &id == scx.catalog.active_role_id() { |
| 5533 | sql_bail!("current role cannot be dropped"); |
| 5534 | } |
| 5535 | for role in scx.catalog.get_roles() { |
| 5536 | for (member_id, grantor_id) in role.membership() { |
| 5537 | if &id == grantor_id { |
| 5538 | let member_role = scx.catalog.get_role(member_id); |
| 5539 | sql_bail!( |
| 5540 | "cannot drop role {}: still depended up by membership of role {} in role {}", |
| 5541 | name.as_str(), |
| 5542 | role.name(), |
| 5543 | member_role.name() |
| 5544 | ); |
| 5545 | } |
| 5546 | } |
| 5547 | } |
| 5548 | Ok(Some(role.id())) |
| 5549 | } |
| 5550 | Err(_) if if_exists => Ok(None), |
| 5551 | Err(e) => Err(e.into()), |
| 5552 | } |
| 5553 | } |
| 5554 | |
| 5555 | fn plan_drop_cluster( |
| 5556 | scx: &StatementContext, |
no test coverage detected