PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL-Prozedursprache C nicht gefunden

Sie stoßen wahrscheinlich auf diese Änderung in PostgreSQL 9.2 (hier die Versionshinweise zitieren):

Namen von prozeduralen Sprachen werden in CREATEFUNCTION (Robert Haas) nicht mehr zwangsweise kleingeschrieben

Während Sprachbezeichner ohne Anführungszeichen immer noch in Kleinbuchstaben geschrieben werden, werden Zeichenfolgen und Bezeichner in Anführungszeichen nicht mehr zwangsweise heruntergeschrieben. So funktioniert zB CREATE FUNCTION ... LANGUAGE 'C' nicht mehr; es muss 'c' geschrieben werden, oder besser die Anführungszeichen weglassen.

Es spiegelt sich auch im Handbuch für CREATE FUNCTION wider

lang_name

Der Name der Sprache, in der die Funktion implementiert ist. Kann SQL sein , C , internal , oder der Name einer benutzerdefinierten prozeduralen Sprache. Aus Gründen der Abwärtskompatibilität kann der Name in einfache Anführungszeichen eingeschlossen werden.

Seit mindestens Version 7.3 (vielleicht länger) wird davon abgeraten, den Sprachnamen zu zitieren, aber alte Gewohnheiten lassen sich offensichtlich nur schwer ablegen. Entfernen der Anführungszeichen um 'C' behebt das Problem und erreicht:LANGUAGE c oder LANGUAGE C .

PL/R war in dieser Hinsicht nicht bereit für PostgreSQL 9.2, der Projektseite nach zu urteilen.

Feedback von Joe Conway

Joe Conway hat eine Antwort hinterlassen, die gelöscht wurde, weil es ein Kommentar sein sollte. Ich füge es hier für die breite Öffentlichkeit ein, die gelöschte Antworten nicht sehen kann:

Ich habe die Nachricht erhalten, dass ich einfach keine Zeit hatte, eine neue PL/R-Version herauszubringen. Suchen Sie bis Dezember danach, aber in der Zwischenzeit ist die oben erwähnte manuelle Problemumgehung ziemlich einfach.