Re: How to determine what is preventing deleting a rule

From: Melvin Davidson <melvin6925(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: stan <stanb(at)panix(dot)com>, "pgsql-general(at)postgresql(dot)org >> PG-General Mailing List" <pgsql-general(at)postgresql(dot)org>
Subject: Re: How to determine what is preventing deleting a rule
Date: 2019-08-18 00:06:50
Message-ID: CANu8Fiz8VBYFnVUXCF7rZCypunyQCEaNd=hO8W7ZDKBtat48fA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

> How can I find out what this object is?
This query might help if the object is a table:

SELECT c.relname as table,
a.rolname as owner,
c.relacl as permits
FROM pg_class c
JOIN pg_authid a ON ( a.OID = c.relowner )
WHERE relname NOT LIKE 'pg_%'
AND relname NOT LIKE 'information%'
AND relname NOT LIKE 'sql_%'
AND relkind = 'r'
AND a.rolname = '<the_owner_with_problem>'
ORDER BY relname;

Since you have not stated the PostgreSQL version, I can only
assure you this will work for 9.6 and below.

On Sat, Aug 17, 2019 at 7:49 PM Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:

> stan <stanb(at)panix(dot)com> writes:
> > I have deleted, what i thought were all the objects referenced by these
> roles,
> > but I still get an error saying there is one object they reference.
> > How can I find out what this object is?
>
> The error should tell you, if you're connected to the database where
> that object is.
>
> regression=# create database d1;
> CREATE DATABASE
> regression=# create database d2;
> CREATE DATABASE
> regression=# create user joe;
> CREATE ROLE
> regression=# \c d2 joe
> You are now connected to database "d2" as user "joe".
> d2=> create table tt(d1 int);
> CREATE TABLE
> d2=> \c d1 postgres
> You are now connected to database "d1" as user "postgres".
> d1=# drop user joe;
> ERROR: role "joe" cannot be dropped because some objects depend on it
> DETAIL: 1 object in database d2
> d1=# \c d2
> You are now connected to database "d2" as user "postgres".
> d2=# drop user joe;
> ERROR: role "joe" cannot be dropped because some objects depend on it
> DETAIL: owner of table tt
>
> Unfortunately, we can't see into the catalogs of a different database
> to explain about dependencies there ...
>
> regards, tom lane
>
>
>

--
*Melvin Davidson*
*Maj. Database & Exploration Specialist*
*Universe Exploration Command – UXC*
Employment by invitation only!

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Luca Ferrari 2019-08-18 14:17:03 question about zeroes in the wal file names
Previous Message Adrian Klaver 2019-08-17 23:59:47 Re: Roles versus users