Skip to content

Commit 6cb8c60

Browse files
committed
Fix assorted bugs in privileges-for-types patch.
Commit 7292055 added privileges on data types, but there were a number of oversights. The implementation of default privileges for types missed a few places, and pg_dump was utterly innocent of the whole concept. Per bug #7741 from Nathan Alden, and subsequent wider investigation.
1 parent cedebc1 commit 6cb8c60

File tree

7 files changed

+110
-29
lines changed

7 files changed

+110
-29
lines changed

doc/src/sgml/catalogs.sgml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2587,7 +2587,8 @@
25872587
Type of object this entry is for:
25882588
<literal>r</> = relation (table, view),
25892589
<literal>S</> = sequence,
2590-
<literal>f</> = function
2590+
<literal>f</> = function,
2591+
<literal>T</> = type
25912592
</entry>
25922593
</row>
25932594

src/backend/catalog/aclchk.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1340,10 +1340,13 @@ RemoveRoleFromObjectACL(Oid roleid, Oid classid, Oid objid)
13401340
case DEFACLOBJ_FUNCTION:
13411341
iacls.objtype = ACL_OBJECT_FUNCTION;
13421342
break;
1343+
case DEFACLOBJ_TYPE:
1344+
iacls.objtype = ACL_OBJECT_TYPE;
1345+
break;
13431346
default:
13441347
/* Shouldn't get here */
1345-
elog(ERROR, "unexpected default ACL type %d",
1346-
pg_default_acl_tuple->defaclobjtype);
1348+
elog(ERROR, "unexpected default ACL type: %d",
1349+
(int) pg_default_acl_tuple->defaclobjtype);
13471350
break;
13481351
}
13491352

src/backend/catalog/dependency.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2888,6 +2888,11 @@ getObjectDescription(const ObjectAddress *object)
28882888
_("default privileges on new functions belonging to role %s"),
28892889
GetUserNameFromId(defacl->defaclrole));
28902890
break;
2891+
case DEFACLOBJ_TYPE:
2892+
appendStringInfo(&buffer,
2893+
_("default privileges on new types belonging to role %s"),
2894+
GetUserNameFromId(defacl->defaclrole));
2895+
break;
28912896
default:
28922897
/* shouldn't get here */
28932898
appendStringInfo(&buffer,

src/bin/pg_dump/dumputils.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -890,6 +890,9 @@ do { \
890890
}
891891
else if (strcmp(type, "TABLESPACE") == 0)
892892
CONVERT_PRIV('C', "CREATE");
893+
else if (strcmp(type, "TYPE") == 0 ||
894+
strcmp(type, "TYPES") == 0)
895+
CONVERT_PRIV('U', "USAGE");
893896
else if (strcmp(type, "FOREIGN DATA WRAPPER") == 0)
894897
CONVERT_PRIV('U', "USAGE");
895898
else if (strcmp(type, "FOREIGN SERVER") == 0)

0 commit comments

Comments
 (0)