postgres@53130=#create role test WITH login createdb; CREATE ROLE postgres@53130=#\c - test You are now connected to database "postgres" as user "test". postgres@53150=#create database test; CREATE DATABASE postgres@53150=#\c - rushabh You are now connected to database "postgres" as user "rushabh". postgres@53162=# postgres@53162=# -- This was working before the below mentioned commit. postgres@53162=#drop owned by test; ERROR: global objects cannot be deleted by doDeletion
Commit 6566133c5f52771198aca07ed18f84519fac1be7 ensure that pg_auth_members.grantor is always valid. This commit did changes into shdepDropOwned() function and combined the SHARED_DEPENDENCY_ACL and SHARED_DEPENDENCY_OWNER. In that process it removed condition for local object in owner dependency.
case SHARED_DEPENDENCY_OWNER: - /* If a local object, save it for deletion below */ - if (sdepForm->dbid == MyDatabaseId) + /* Save it for deletion below */
Case ending up with above error because of the above removed condition.
Please find the attached patch which fixes the case.