diff options
-rw-r--r-- | doc/src/sgml/ref/drop_owned.sgml | 9 | ||||
-rw-r--r-- | src/backend/catalog/pg_shdepend.c | 13 |
2 files changed, 15 insertions, 7 deletions
diff --git a/doc/src/sgml/ref/drop_owned.sgml b/doc/src/sgml/ref/drop_owned.sgml index 9dd4184916d..a7fce5f64d5 100644 --- a/doc/src/sgml/ref/drop_owned.sgml +++ b/doc/src/sgml/ref/drop_owned.sgml @@ -29,10 +29,11 @@ DROP OWNED BY <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCAD <title>Description</title> <para> - <command>DROP OWNED</command> drops all the objects in the current + <command>DROP OWNED</command> drops all the objects within the current database that are owned by one of the specified roles. Any privileges granted to the given roles on objects in the current - database will also be revoked. + database and on shared objects (databases, tablespaces) will also be + revoked. </para> </refsect1> @@ -92,6 +93,10 @@ DROP OWNED BY <replaceable class="PARAMETER">name</replaceable> [, ...] [ CASCAD reassigns the ownership of all the database objects owned by one or more roles. </para> + + <para> + Databases and tablespaces owned by the role(s) will not be removed. + </para> </refsect1> <refsect1> diff --git a/src/backend/catalog/pg_shdepend.c b/src/backend/catalog/pg_shdepend.c index 02e8d7c62e5..98248ac3ee0 100644 --- a/src/backend/catalog/pg_shdepend.c +++ b/src/backend/catalog/pg_shdepend.c @@ -1239,11 +1239,14 @@ shdepDropOwned(List *roleids, DropBehavior behavior) ExecGrantStmt_oids(&istmt); break; case SHARED_DEPENDENCY_OWNER: - /* Save it for deletion below */ - obj.classId = sdepForm->classid; - obj.objectId = sdepForm->objid; - obj.objectSubId = sdepForm->objsubid; - add_exact_object_address(&obj, deleteobjs); + /* If a local object, save it for deletion below */ + if (sdepForm->dbid == MyDatabaseId) + { + obj.classId = sdepForm->classid; + obj.objectId = sdepForm->objid; + obj.objectSubId = sdepForm->objsubid; + add_exact_object_address(&obj, deleteobjs); + } break; } } |