aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/user.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/commands/user.c')
-rw-r--r--src/backend/commands/user.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c
index 6b42d4fc34a..02824c32a49 100644
--- a/src/backend/commands/user.c
+++ b/src/backend/commands/user.c
@@ -1093,7 +1093,7 @@ DropRole(DropRoleStmt *stmt)
Relation pg_authid_rel,
pg_auth_members_rel;
ListCell *item;
- List *role_addresses = NIL;
+ List *role_oids = NIL;
if (!have_createrole_privilege())
ereport(ERROR,
@@ -1119,7 +1119,6 @@ DropRole(DropRoleStmt *stmt)
ScanKeyData scankey;
SysScanDesc sscan;
Oid roleid;
- ObjectAddress *role_address;
if (rolspec->roletype != ROLESPEC_CSTRING)
ereport(ERROR,
@@ -1260,21 +1259,16 @@ DropRole(DropRoleStmt *stmt)
*/
CommandCounterIncrement();
- /* Looks tentatively OK, add it to the list. */
- role_address = palloc(sizeof(ObjectAddress));
- role_address->classId = AuthIdRelationId;
- role_address->objectId = roleid;
- role_address->objectSubId = 0;
- role_addresses = lappend(role_addresses, role_address);
+ /* Looks tentatively OK, add it to the list if not there yet. */
+ role_oids = list_append_unique_oid(role_oids, roleid);
}
/*
* Second pass over the roles to be removed.
*/
- foreach(item, role_addresses)
+ foreach(item, role_oids)
{
- ObjectAddress *role_address = lfirst(item);
- Oid roleid = role_address->objectId;
+ Oid roleid = lfirst_oid(item);
HeapTuple tuple;
Form_pg_authid roleform;
char *detail;