mirror of
https://github.com/postgres/postgres.git
synced 2025-07-07 00:36:50 +03:00
Make more use of RoleSpec struct
Most code was casting this through a generic Node. By declaring everything as RoleSpec appropriately, we can remove a bunch of casts and ad-hoc node type checking. Reviewed-by: Alvaro Herrera <alvherre@2ndquadrant.com>
This commit is contained in:
@ -449,7 +449,7 @@ CreateRole(ParseState *pstate, CreateRoleStmt *stmt)
|
||||
foreach(item, addroleto)
|
||||
{
|
||||
RoleSpec *oldrole = lfirst(item);
|
||||
HeapTuple oldroletup = get_rolespec_tuple((Node *) oldrole);
|
||||
HeapTuple oldroletup = get_rolespec_tuple(oldrole);
|
||||
Oid oldroleid = HeapTupleGetOid(oldroletup);
|
||||
char *oldrolename = NameStr(((Form_pg_authid) GETSTRUCT(oldroletup))->rolname);
|
||||
|
||||
@ -1396,9 +1396,11 @@ roleSpecsToIds(List *memberNames)
|
||||
|
||||
foreach(l, memberNames)
|
||||
{
|
||||
Node *rolespec = (Node *) lfirst(l);
|
||||
RoleSpec *rolespec = (RoleSpec *) lfirst(l);
|
||||
Oid roleid;
|
||||
|
||||
Assert(IsA(rolespec, RoleSpec));
|
||||
|
||||
roleid = get_rolespec_oid(rolespec, false);
|
||||
result = lappend_oid(result, roleid);
|
||||
}
|
||||
@ -1493,7 +1495,7 @@ AddRoleMems(const char *rolename, Oid roleid,
|
||||
ereport(ERROR,
|
||||
(errcode(ERRCODE_INVALID_GRANT_OPERATION),
|
||||
(errmsg("role \"%s\" is a member of role \"%s\"",
|
||||
rolename, get_rolespec_name((Node *) memberRole)))));
|
||||
rolename, get_rolespec_name(memberRole)))));
|
||||
|
||||
/*
|
||||
* Check if entry for this role/member already exists; if so, give
|
||||
@ -1508,7 +1510,7 @@ AddRoleMems(const char *rolename, Oid roleid,
|
||||
{
|
||||
ereport(NOTICE,
|
||||
(errmsg("role \"%s\" is already a member of role \"%s\"",
|
||||
get_rolespec_name((Node *) memberRole), rolename)));
|
||||
get_rolespec_name(memberRole), rolename)));
|
||||
ReleaseSysCache(authmem_tuple);
|
||||
continue;
|
||||
}
|
||||
@ -1619,7 +1621,7 @@ DelRoleMems(const char *rolename, Oid roleid,
|
||||
{
|
||||
ereport(WARNING,
|
||||
(errmsg("role \"%s\" is not a member of role \"%s\"",
|
||||
get_rolespec_name((Node *) memberRole), rolename)));
|
||||
get_rolespec_name(memberRole), rolename)));
|
||||
continue;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user