PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Langage procédural PostgreSQL C introuvable

Vous rencontrez probablement ce changement dans PostgreSQL 9.2 (en citant les notes de version ici) :

Plus de noms de langage procéduraux en minuscules de force dans CREATEFUNCTION (Robert Haas)

Alors que les identificateurs de langue sans guillemets sont toujours en minuscules, les chaînes et les identificateurs entre guillemets ne sont plus obligatoirement mis en minuscules. Ainsi par exemple CREATE FUNCTION ... LANGUAGE 'C' ne fonctionnera plus; il doit être orthographié 'c', ou mieux omettre les guillemets.

Cela se reflète également dans le manuel de CREATE FUNCTION

lang_name

Le nom du langage dans lequel la fonction est implémentée. Peut être SQL , C , internal , ou le nom d'un langage procédural défini par l'utilisateur. Pour des raisons de compatibilité descendante, le nom peut être entouré de guillemets simples.

La citation du nom de la langue est déconseillée depuis au moins la version 7.3 (peut-être plus longue), mais les vieilles habitudes ont la vie dure, évidemment. Suppression des guillemets autour de 'C' résout le problème, en arrivant à :LANGUAGE c ou LANGUAGE C .

PL/R n'était pas prêt pour PostgreSQL 9.2 à cet égard, à en juger par la page du projet.

Commentaires de Joe Conway

Joe Conway a laissé une réponse qui a été supprimée car cela devrait être un commentaire. Je le colle ici pour le grand public qui ne peut pas voir les réponses supprimées :

J'ai reçu le message, je n'ai tout simplement pas eu le temps de faire une nouvelle version PL/R.Recherchez-la d'ici décembre, mais en attendant, la solution de contournement manuelle indiquée ci-dessus est assez simple.