PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Removendo COMMENT ON de todos os objetos no PostgreSQL


Eu enfrentei um problema muito semelhante há algum tempo e encontrei uma solução muito simples:excluir da tabela de catálogo do sistema pg_description diretamente . Os comentários são apenas "anexados" aos objetos e não interferem de outra forma.
DELETE FROM pg_description WHERE description = 'something special';

Isenção de responsabilidade:
Manipulação direta de tabelas de catálogo é perigoso e uma medida de último recurso. Você precisa saber o que está fazendo e você está fazendo isso por sua conta e risco! Se você estragar tudo, você pode estragar seu banco de dados (cluster).

Perguntei sobre a ideia na lista pgsql-admin e recebi um resposta encorajadora de Tom Lane :
> DELETE FROM pg_description WHERE description = 'My very special
> totally useless comment.';

> AFAICS, there are no side-effects. Are there any?

It's safe enough, as long as you don't delete the wrong comments.
There's no hidden infrastructure for a comment.

            regards, tom lane

Você deve certificar-se de que não há comentários que você gostaria de manter. Inspecione o que você vai excluir primeiro. Esteja ciente de que muitos objetos Postgres internos também têm comentários.

Por exemplo, para apenas excluir todos os comentários nas colunas da tabela , você poderia usar:
SELECT *
-- DELETE
FROM   pg_description
WHERE  objsubid > 0;

O manual informa sobre a coluna objsubid :