1
0
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:
Peter Eisentraut
2016-12-28 12:00:00 -05:00
parent f0774abde8
commit 2e254130d1
7 changed files with 41 additions and 54 deletions

View File

@ -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;
}