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/utils/adt/acl.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/utils/adt/acl.c')
-rw-r--r-- | src/backend/utils/adt/acl.c | 28 |
1 files changed, 6 insertions, 22 deletions
diff --git a/src/backend/utils/adt/acl.c b/src/backend/utils/adt/acl.c index 025a99e55af..cc4e0b3f815 100644 --- a/src/backend/utils/adt/acl.c +++ b/src/backend/utils/adt/acl.c @@ -5143,15 +5143,10 @@ get_role_oid_or_public(const char *rolname) * case must check the case separately. */ Oid -get_rolespec_oid(const Node *node, bool missing_ok) +get_rolespec_oid(const RoleSpec *role, bool missing_ok) { - RoleSpec *role; Oid oid; - if (!IsA(node, RoleSpec)) - elog(ERROR, "invalid node type %d", node->type); - - role = (RoleSpec *) node; switch (role->roletype) { case ROLESPEC_CSTRING: @@ -5186,15 +5181,10 @@ get_rolespec_oid(const Node *node, bool missing_ok) * Caller must ReleaseSysCache when done with the result tuple. */ HeapTuple -get_rolespec_tuple(const Node *node) +get_rolespec_tuple(const RoleSpec *role) { - RoleSpec *role; HeapTuple tuple; - role = (RoleSpec *) node; - if (!IsA(node, RoleSpec)) - elog(ERROR, "invalid node type %d", node->type); - switch (role->roletype) { case ROLESPEC_CSTRING: @@ -5235,13 +5225,13 @@ get_rolespec_tuple(const Node *node) * Given a RoleSpec, returns a palloc'ed copy of the corresponding role's name. */ char * -get_rolespec_name(const Node *node) +get_rolespec_name(const RoleSpec *role) { HeapTuple tp; Form_pg_authid authForm; char *rolename; - tp = get_rolespec_tuple(node); + tp = get_rolespec_tuple(role); authForm = (Form_pg_authid) GETSTRUCT(tp); rolename = pstrdup(NameStr(authForm->rolname)); ReleaseSysCache(tp); @@ -5257,17 +5247,11 @@ get_rolespec_name(const Node *node) * message is provided. */ void -check_rolespec_name(const Node *node, const char *detail_msg) +check_rolespec_name(const RoleSpec *role, const char *detail_msg) { - RoleSpec *role; - - if (!node) + if (!role) return; - role = (RoleSpec *) node; - - Assert(IsA(node, RoleSpec)); - if (role->roletype != ROLESPEC_CSTRING) return; |