diff options
author | Peter Eisentraut <peter_e@gmx.net> | 2016-12-28 12:00:00 -0500 |
---|---|---|
committer | Peter Eisentraut <peter_e@gmx.net> | 2016-12-29 10:49:39 -0500 |
commit | 2e254130d1d3f16575f2d72952ab23b4e27d035a (patch) | |
tree | db49855dee51e965215877173999daf5204be385 /src/backend/commands/user.c | |
parent | f0774abde868e0b5a2acbe75b5028884752f739d (diff) | |
download | postgresql-2e254130d1d3f16575f2d72952ab23b4e27d035a.tar.gz postgresql-2e254130d1d3f16575f2d72952ab23b4e27d035a.zip |
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>
Diffstat (limited to 'src/backend/commands/user.c')
-rw-r--r-- | src/backend/commands/user.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c index adc6b99b215..a3521e77570 100644 --- a/src/backend/commands/user.c +++ b/src/backend/commands/user.c @@ -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; } |