Ошибка с REASSIGN OWNED BY в PostreSQL
Я в Postgres 9.2. В документации https://www.postgresql.org/docs/9.2/static/sql-reassign-owned.html говорится: REASSIGN OWNED only affects the objects in the current database
, Именно то, что мне нужно, но это кажется ложным.
Эта команда также меняет владельца всех баз данных, принадлежащих старому пользователю.
Вот что я сделал:
Скопируйте базу данных:
$ sudo -u postgres -i
$ createdb -O faire-pp -T vozatou_db1 test_db
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------+----------+----------+-------------+-------------+-----------------------
test_db | faire-pp | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
vozatou_db1 | vozatou | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
Права доступа к таблицам в новой базе данных неверны (по-прежнему старый пользователь):
postgres=# \c test_db
You are now connected to database "test_db" as user "postgres".
test_db=# \d
List of relations
Schema | Name | Type | Owner
--------+------------------------------------------+----------+---------
public | auth_group | table | vozatou
public | auth_group_id_seq | sequence | vozatou
Измени это:
test_db=# REASSIGN OWNED BY "vozatou" TO "faire-pp";
REASSIGN OWNED
test_db=# \d
List of relations
Schema | Name | Type | Owner
--------+------------------------------------------+----------+----------
public | auth_group | table | faire-pp
public | auth_group_id_seq | sequence | faire-pp
Все выглядит хорошо, но:
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------+----------+----------+-------------+-------------+-----------------------
test_db | faire-pp | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
vozatou_db1 | faire-pp | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
Почему изменился владелец моей исходной базы данных?
В документации конкретно сказано: The REASSIGN OWNED command does not affect the ownership of any databases owned by the role.
Есть идеи?
ОБНОВЛЕНИЕ: Согласно комментарию ниже, проблема может быть связана с shared objects
Я попытался определить, с каким объектом общего доступа SELECT * FROM pg_shdepend;
но это не показало мне что-то пригодное для использования.