REASSIGN OWNED instructs the system to change
- the ownership of the database objects owned by one of the
+ the ownership of database objects owned by one of the
old_roles, to new_role.
old_role
- The name of a role. The ownership of all the objects in the
- current database owned by this role will be reassigned to
+ The name of a role. The ownership of all the objects within the
+ current database, and of all shared objects (databases, tablespaces),
+ owned by this role will be reassigned to
new_role.
REASSIGN OWNED is often used to prepare for the
removal of one or more roles. Because REASSIGN
- OWNED only affects the objects in the current database,
+ OWNED does not affect objects within other databases,
it is usually necessary to execute this command in each database
that contains objects owned by a role that is to be removed.
privileges.
- The REASSIGN OWNED command does not affect the
- ownership of any databases owned by the role. Use
- to reassign that ownership.
-
-
{
Form_pg_shdepend sdepForm = (Form_pg_shdepend) GETSTRUCT(tuple);
- /* We only operate on objects in the current database */
- if (sdepForm->dbid != MyDatabaseId)
+ /*
+ * We only operate on shared objects and objects in the current
+ * database
+ */
+ if (sdepForm->dbid != MyDatabaseId &&
+ sdepForm->dbid != InvalidOid)
continue;
/* Unexpected because we checked for pins above */
case OperatorFamilyRelationId:
case OperatorClassRelationId:
case ExtensionRelationId:
+ case TableSpaceRelationId:
+ case DatabaseRelationId:
{
Oid classId = sdepForm->classid;
Relation catalog;