sql >> Base de Datos >  >> RDS >> PostgreSQL

Eliminando COMMENT ON de todos los objetos en PostgreSQL

Me enfrenté a un problema muy similar hace algún tiempo y encontré una solución muy simple:eliminar de la tabla del catálogo del sistema pg_description directamente . Los comentarios simplemente se "adjuntan" a los objetos y no interfieren de otra manera.

DELETE FROM pg_description WHERE description = 'something special';

Descargo de responsabilidad:
Manipular tablas de catálogo directamente es peligroso y una medida de último recurso. Tienes que saber lo que estás haciendo ¡y lo estás haciendo bajo tu propio riesgo! Si te equivocas, puedes arruinar tu base de datos (clúster).

Pregunté sobre la idea en la lista de administradores de pgsql y obtuve un respuesta alentadora 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

Debe asegurarse de que no haya ningún comentario que prefiera conservar. Inspeccione primero lo que va a eliminar. Tenga en cuenta que muchos objetos integrados de Postgres también tienen comentarios.

Por ejemplo, para eliminar solo todos los comentarios en las columnas de la tabla , podrías usar:

SELECT *
-- DELETE
FROM   pg_description
WHERE  objsubid > 0;

El manual informa sobre la columna objsubid :