As funções internas são funções escritas em C, que foram vinculadas estaticamente ao servidor PostgreSQL. O “corpo” da definição da função especifica o nome da função na linguagem C, que não precisa ser igual ao nome declarado para uso no SQL. (Por motivo de compatibilidade com versões anteriores, um corpo vazio é aceito como significando que o nome da função na linguagem C é idêntico ao nome SQL.)
Normalmente, todas as funções internas presentes no servidor são
declaradas durante a inicialização da instância
(veja Criação de um agrupamento de bancos de dados),
mas o usuário pode usar o comando CREATE FUNCTION
para criar nomes alternativos adicionais para uma função interna.
As funções internas são declaradas no comando
CREATE FUNCTION com o nome de linguagem
internal.
Por exemplo, para criar um alias para a função dsqrt:
CREATE FUNCTION raiz_quadrada(double precision) RETURNS double precision
AS 'dsqrt'
LANGUAGE internal
STRICT;
(A maioria das funções internas espera ser declarada como “STRICT”.)
Nem todas as funções “predefinidas” são “internas” no sentido acima. Algumas funções predefinidas são escritas em SQL.