52.29. pg_language #

O catálogo pg_language registra as linguagens nas quais se pode escrever funções ou procedimentos armazenados. Veja CREATE LANGUAGE e Linguagens procedurais para obter mais informações sobre tratadores de linguagem.

Tabela 52.29. Colunas de pg_language

Coluna Tipo de dados

Descrição

oid oid

Identificador da linha

lanname name

Nome da linguagem

lanowner oid (referencia pg_authid.oid)

Dono da linguagem

lanispl bool

Falso para linguagens internas (como SQL), e verdade para linguagens definidas pelo usuário. No momento, pg_dump ainda usa esta informação para determinar quais linguagens precisam ser colocadas na cópia de segurança, mas isto poderá ser substituído por um mecanismo diferente no futuro.

lanpltrusted bool

Verdade se for uma linguagem confiável, significando que se acredita não conceder acesso a nada fora do ambiente normal de execução do SQL. Somente superusuários podem criar funções em linguagens não confiáveis.

lanplcallfoid oid (referencia pg_proc.oid)

Para linguagens externas, faz referência ao tratador da linguagem, que é uma função especial responsável por executar todas as funções escritas na linguagem específica. Zero para linguagens internas.

laninline oid (referencia pg_proc.oid)

Referencia a função responsável por executar blocos de código anônimos em-linha (inline) (blocos DO). Zero se não há suporte para blocos em-linha.

lanvalidator oid (referencia pg_proc.oid)

Referencia a função validadora de linguagem responsável por verificar a sintaxe e a validade das novas funções quando elas são criadas. Zero se não for fornecido nenhum validador.

lanacl aclitem[]

Privilégios de acesso; veja Privilégios para obter detalhes


Exemplo 52.20. Exemplo do tradutor

Lista de linguagens

Uso do catálogo pg_language para mostrar as linguagens nas quais se pode escrever funções ou procedimentos armazenados, e uso também do meta-comando \dL do psql para mostrar as linguagens procedurais.

ana=> \C 'Lista de linguagens'
O título é "Lista de linguagens".
ana=> SELECT
ana->     lanname,
ana->     lanowner::regrole,
ana->     lanispl,
ana->     lanpltrusted,
ana->     lanplcallfoid::regprocedure,
ana->     laninline::regprocedure,
ana->     lanvalidator::regproc
ana-> FROM pg_language\gx

Lista de linguagens
-[ RECORD 1 ]-+---------------------------------
lanname       | internal
lanowner      | postgres
lanispl       | f
lanpltrusted  | f
lanplcallfoid | -
laninline     | -
lanvalidator  | fmgr_internal_validator
-[ RECORD 2 ]-+---------------------------------
lanname       | c
lanowner      | postgres
lanispl       | f
lanpltrusted  | f
lanplcallfoid | -
laninline     | -
lanvalidator  | fmgr_c_validator
-[ RECORD 3 ]-+---------------------------------
lanname       | sql
lanowner      | postgres
lanispl       | f
lanpltrusted  | t
lanplcallfoid | -
laninline     | -
lanvalidator  | fmgr_sql_validator
-[ RECORD 4 ]-+---------------------------------
lanname       | plpgsql
lanowner      | postgres
lanispl       | t
lanpltrusted  | t
lanplcallfoid | plpgsql_call_handler()
laninline     | plpgsql_inline_handler(internal)
lanvalidator  | plpgsql_validator
-[ RECORD 5 ]-+---------------------------------
lanname       | pltcl
lanowner      | ana
lanispl       | t
lanpltrusted  | t
lanplcallfoid | pltcl_call_handler()
laninline     | -
lanvalidator  | -
-[ RECORD 6 ]-+---------------------------------
lanname       | plperl
lanowner      | ana
lanispl       | t
lanpltrusted  | t
lanplcallfoid | plperl_call_handler()
laninline     | plperl_inline_handler(internal)
lanvalidator  | plperl_validator

ana=> \dL

                      Lista de linguagens
  Nome   |   Dono   | Confiável |          Descrição
---------+----------+-----------+------------------------------
 plperl  | ana      | t         | PL/Perl procedural language
 plpgsql | postgres | t         | PL/pgSQL procedural language
 pltcl   | ana      | t         | PL/Tcl procedural language
(3 linhas)


52.29.1. Veja também #

CREATE LANGUAGE, ALTER LANGUAGE, DROP LANGUAGE