A partir da CREATE ROLEdocumentaçã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_dumpdespeja um único banco de dados, você não pode extrair funções com esse utilitário. O pg_dumpall --roles-onlycomando 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_authidcatá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_authidatravés da pg_rolesvisualização.
NOTA : você precisará de direitos de superusuário para despejar as funções. Caso contrário, você terá a permissão negada no SELECTon pg_authid- e mesmo quando um superusuário concede SELECTdireitos, você terá o mesmo erro. Nesse caso, no entanto, você pode listar as funções consultando-as pg_authiddiretamente COPYem um arquivo e rolar alguma mágica para criar as instruções CREATE ROLEe as necessárias ALTER ROLE.