PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Linguagem procedural PostgreSQL C não encontrada


Você provavelmente está se deparando com essa mudança no PostgreSQL 9.2 (citando as notas de lançamento aqui):

Não forçosamente nomes de linguagem procedurais em minúsculas em CREATEFUNCTION (Robert Haas)

Embora os identificadores de idioma sem aspas ainda estejam em minúsculas, as strings e os identificadores entre aspas não são mais forçosamente reduzidos. Assim, por exemplo, CREATE FUNCTION ... LANGUAGE 'C' não funcionará mais; deve ser escrito 'c', ou melhor omitir as aspas.

Também está refletido no manual para CREATE FUNCTION

lang_name

O nome da linguagem na qual a função é implementada. Pode ser SQL , C , internal , ou o nome de uma linguagem procedural definida pelo usuário. Para compatibilidade com versões anteriores, o nome pode ser colocado entre aspas simples.

Citar o nome do idioma foi desencorajado desde pelo menos a versão 7.3 (talvez mais longa), mas os velhos hábitos custam a morrer, obviamente. Removendo as aspas em torno de 'C' corrige o problema, chegando a:LANGUAGE c ou LANGUAGE C .

PL/R não estava pronto para o PostgreSQL 9.2 a esse respeito, a julgar pela página do projeto.

Comentários de Joe Conway


Joe Conway deixou uma resposta que foi excluída porque deveria ser um comentário. Eu colo aqui para o público em geral que não pode ver as respostas excluídas:

Recebi a mensagem, só não tive tempo de fazer um novo lançamento do PL/R. Procure-o até dezembro, mas enquanto isso a solução manual mencionada acima é bem simples.