On Sun, Dec 9, 2012 at 8:28 PM, Jaime Casanova <ja...@2ndquadrant.com> wrote: > On Sun, Dec 9, 2012 at 11:13 PM, Alvaro Herrera > <alvhe...@2ndquadrant.com> wrote: >> Tom Lane wrote: >>> >>> spam_ea...@gmx.net writes: >>> > postgres=# create user testuser with password 'secret'; >>> > CREATE ROLE >>> > postgres=# create database testdb owner testuser; >>> > CREATE DATABASE >>> > testdb=> drop owned by testuser; >>> > ERROR: unrecognized object class: 1262 >>> >>> I can reproduce this in all versions back to 8.3. In 8.2, the role's >>> ownership of the database is silently ignored, which I think was the >>> design intention. I doubt that we want DROP OWNED dropping whole >>> databases. At most maybe we should raise a NOTICE? >> >> I broke it recently: fe3b5eb08 >> > > whatever is the right way to solve this... shouldn't we do something > similar in shdepReassignOwned() in which we are still ignoring shared > objects?
Based on the commit message, it seems like it should *only* be in shdepReassignOwned. However, when I put it there it fails, as the code that does the ownership change cannot deal with tablespaces (or databases) ERROR: unexpected classid 1213 I am unsure of the goal here. The docs clearly say that only objects in the current database are affected, so why are we even trying to do something with tablespaces (or databases), which do not live in any database? And if we want to change the contract to allow it to climb out of the current database, why limit it to shared objects rather than crawling all databases? Cheers, Jeff -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs