CREATE LANGUAGE

Nome

CREATE LANGUAGE -- cria uma linguagem procedural

Sinopse

CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE nome
    HANDLER tratador_de_chamadas [ VALIDATOR função_de_validação ]

Descrição

Utilizando o comando CREATE LANGUAGE um usuário do PostgreSQL pode registrar uma nova linguagem procedural em um banco de dados do PostgreSQL. Depois de registrada, poderão ser definidas funções e procedimentos de gatilho nesta nova linguagem. O usuário deve possuir o privilégio de superusuário do PostgreSQL para poder registrar uma nova linguagem.

O comando CREATE LANGUAGE associa o nome da linguagem ao tratador de chamadas (call handler) responsável pela execução das funções escritas nesta linguagem. Para obter informações adicionais sobre tratadores de chamada de linguagens deve ser consultada a Seção 31.3.

Deve ser observado que as linguagens procedurais são locais a cada banco de dados. Para tornar, por padrão, uma linguagem disponível para todos os bancos de dados, esta deve ser instalada no banco de dados template1.

Parâmetros

TRUSTED

TRUSTED especifica que o tratador de chamadas para a linguagem é seguro, ou seja, não oferece a um usuário sem privilégios qualquer funcionalidade para transpor as restrições de acesso. Se esta palavra chave for omitida ao registrar a linguagem, somente os usuários do PostgreSQL com privilégio de superusuário vão poder usar esta linguagem para criar novas funções.

PROCEDURAL

Apenas informativo.

nome

O nome da nova linguagem procedural. Não existe distinção entre letras minúsculas e maiúsculas no nome da linguagem. O nome deve ser único entre todas as linguagens do banco de dados.

Por compatibilidade com as versões anteriores, o nome pode ser escrito entre apóstrofos (').

HANDLER tratador_de_chamadas

O tratador_de_chamadas é o nome de uma função, previamente registrada, que será chamada para executar as funções escritas nesta linguagem procedural. O tratador de chamadas para a linguagem procedural deve ser escrito em uma linguagem compilada como a linguagem C, com a convenção de chamadas versão 1, registrada no PostgreSQL como uma função que não recebe nenhum argumento e retorna o tipo language_handler, que é um tipo guardador de lugar usado apenas para identificar a função como tratadora de chamadas.

VALIDATOR função_de_validação

A função_de_validação é o nome da função, registrada previamente, a ser chamada quando for criada uma nova função nesta linguagem para validar esta nova função. Se não for especificada nenhuma função validadora, então a nova função não será verificada ao ser criada. A função validadora deve receber um argumento do tipo oid, que será o OID (identificador do objeto) da função a ser criada, e normalmente retorna void.

Tipicamente a função validadora inspeciona o corpo da função para verificar se a sintaxe está correta, mas também pode verificar outras propriedades da função como, por exemplo, certos tipos de dado para argumentos que a linguagem não pode tratar. Para sinalizar erro a função validadora deve usar a função ereport(). O valor retornado pela função é ignorado.

Observações

Normalmente, este comando não deve ser executado diretamente pelos usuários. Para as linguagens procedurais fornecidas na distribuição do PostgreSQL deve ser utilizado o aplicativo createlang, porque este aplicativo também instala o tratador de chamadas correto; o aplicativo createlang chama o comando CREATE LANGUAGE internamente.

Nas versões do PostgreSQL anteriores a 7.3 era necessário declarar as funções tratadoras como retornando o tipo guardador de lugar opaque, em vez de language_handler. Para permitir a carga de cópias de segurança antigas (dump), o comando CREATE LANGUAGE aceita funções declaradas como retornando opaque, mas mostra uma mensagem e muda o tipo de dado retornado declarado pela função para language_handler.

Use o comando CREATE FUNCTION para criar uma função.

Para remover uma linguagem procedural deve ser utilizado o comando DROP LANGUAGE, ou melhor ainda, o aplicativo droplang.

O catálogo do sistema pg_language (consulte a Seção 42.18) registra informações sobre as linguagens instaladas neste momento. O aplicativo createlang possui uma opção para listar as linguagens instaladas (mas só mostra as linguagens procedurais — N. do T.).

Para criar funções em uma linguagem procedural, o usuário deve possuir o privilégio USAGE para a linguagem. O aplicativo createlang concede, automaticamente, permissão para todos se a linguagem for trusted.

Exemplos

Os dois comandos mostrados abaixo, executados em seqüência, registram uma nova linguagem procedural e o tratador de chamadas associado:

CREATE FUNCTION plsample_call_handler() RETURNS language_handler
    AS '$libdir/plsample'
    LANGUAGE C;
CREATE LANGUAGE plsample
    HANDLER plsample_call_handler;

Compatibilidade

O comando CREATE LANGUAGE é uma extensão do PostgreSQL.

Consulte também

ALTER LANGUAGE, CREATE FUNCTION, DROP LANGUAGE, GRANT, REVOKE, createlang, droplang
SourceForge.net Logo CSS válido!