A partir da CREATE ROLE
documentação :
Observe que as funções são definidas no nível do cluster do banco de dados e, portanto, são válidas em todos os bancos de dados no cluster.
Como pg_dump
despeja um único banco de dados, você não pode extrair funções com esse utilitário. O pg_dumpall --roles-only
comando que você propôs fará o trabalho - no entanto, pode ser necessário filtrar sua saída para que apenas as funções desejadas sejam criadas no novo cluster.
As funções são armazenadas no pg_authid
catálogo, que é fisicamente armazenado na data/global/
subpasta de uma instalação do PostgreSQL, junto com as outras tabelas de todo o cluster. Você pode consultar o conteúdo pg_authid
através da pg_roles
visualização.
NOTA : você precisará de direitos de superusuário para despejar as funções. Caso contrário, você terá a permissão negada no SELECT
on pg_authid
- e mesmo quando um superusuário concede SELECT
direitos, você terá o mesmo erro. Nesse caso, no entanto, você pode listar as funções consultando-as pg_authid
diretamente COPY
em um arquivo e rolar alguma mágica para criar as instruções CREATE ROLE
e as necessárias ALTER ROLE
.