Uso o PostgreSQL há muitos anos e, entre outras coisas, adicionei várias funções escalares definidas pelo usuário.
Claro, se eu soubesse disso na época, deveria ter adicionado minhas próprias funções a um esquema separado para melhor gerenciamento. Em vez disso, minhas funções estão todas misturadas com as padrão.
Existe uma maneira de distinguir as funções padrão para que eu possa organizar melhor minhas próprias funções?
Sim; observe o esquema que os contém. Se for
pg_catalog
, é uma função do sistema. Caso contrário, é uma função definida pelo usuário.Uma área cinza são funções que pertencem a uma extensão. Você só pode identificá-los por sua participação em uma extensão. Uma maneira simples é executar um
pg_dump -s
: as funções que pertencem à extensão não serão incluídas nela.Como alternativa, aqui está uma consulta que listará todas as funções que não pertencem ao sistema PostgreSQL ou a uma extensão:
A melhor prática é definir um esquema para os objetos de banco de dados que você mesmo cria. Em seguida, crie todas as extensões no
public
esquema, para que suas funções acabem lá. Não se esqueça doREVOKE
privilégioCREATE
nopublic
esquema (se estiver usando v14 ou inferior).