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 |
|---|
Identificador da linha |
Nome da linguagem |
Dono da linguagem |
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. |
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. |
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. |
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. |
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. |
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)