Estamos recebendo o erro abaixo ao mover a tabela system_catalog para tablepsaces não padrão (significa nos tablespaces que não são atribuídos como tablespace padrão para o banco de test
dados
Por exemplo:
test=# select schemaname,tablename,tablespace,tableowner from pg_tables where schemaname='pg_catalog' and tablename='pg_attribute';
schemaname | tablename | tablespace | tableowner
------------+--------------+------------+------------
pg_catalog | pg_attribute | tbs1 | pginst13
(1 row)
test=# ALTER TABLE pg_catalog.pg_attribute set tablespace pg_default;
ERROR: permission denied: "pg_attribute" is a system catalog
Não consigo encontrar nenhuma informação no documento que mostre que não podemos fazer acima.
Obrigado pela ajuda.
Para mover as tabelas de catálogo de um banco de dados para outro tablespace, mova o banco de dados para esse tablespace:
Se você deseja mover uma tabela de catálogo individual, deve alterar
allow_system_table_mods
paraon
. Então você deve ser capaz de usarALTER TABLE
em um catálogo.No entanto, não acho que seja uma boa ideia. Primeiro, não vejo nenhum benefício. Em segundo lugar, a alteração será perdida quando você atualizar o PostgreSQL. Finalmente, a documentação do
allow_system_table_mods
avisa em termos inequívocos: