aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/user.c
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2016-12-28 12:00:00 -0500
committerPeter Eisentraut <peter_e@gmx.net>2016-12-29 10:49:39 -0500
commit2e254130d1d3f16575f2d72952ab23b4e27d035a (patch)
treedb49855dee51e965215877173999daf5204be385 /src/backend/commands/user.c
parentf0774abde868e0b5a2acbe75b5028884752f739d (diff)
downloadpostgresql-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.c12
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;
}