MCPcopy Create free account
hub / github.com/MaterializeInc/materialize / plan_drop_role

Function plan_drop_role

src/sql/src/plan/statement/ddl.rs:5524–5553  ·  view source on GitHub ↗
(
    scx: &StatementContext,
    if_exists: bool,
    name: &Ident,
)

Source from the content-addressed store, hash-verified

5522}
5523
5524fn 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
5555fn plan_drop_cluster(
5556 scx: &StatementContext,

Callers 1

plan_drop_objectsFunction · 0.85

Calls 7

resolve_roleMethod · 0.45
as_strMethod · 0.45
idMethod · 0.45
active_role_idMethod · 0.45
get_rolesMethod · 0.45
membershipMethod · 0.45
get_roleMethod · 0.45

Tested by

no test coverage detected