sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL procedurspråk C hittades inte

Du stöter antagligen på den här förändringen i PostgreSQL 9.2 (citerar versionskommentarerna här):

Inte längre tvångsvis små procedurspråksnamn i CREATEFUNCTION (Robert Haas)

Medan icke-citerade språkidentifierare fortfarande är små bokstäver, är strängar och citerade identifierare inte längre tvångsmässiga nedsänkta. Så till exempel CREATE FUNCTION ... SPRÅK 'C' kommer inte längre att fungera; det måste stavas "c", eller bättre utelämna citattecken.

Det återspeglas också i manualen för CREATE FUNCTION

lang_name

Namnet på språket som funktionen är implementerad i. Kan vara SQL , C , internal , eller namnet på ett användardefinierat procedurspråk. För bakåtkompatibilitet kan namnet omges av enkla citattecken.

Att citera språknamnet har varit avskräckt sedan åtminstone version 7.3 (kanske längre), men gamla vanor dör så klart. Ta bort citattecken runt 'C' löser problemet och kommer fram till:LANGUAGE c eller LANGUAGE C .

PL/R var inte redo för PostgreSQL 9.2 i det avseendet, av projektsidan att döma.

Feedback från Joe Conway

Joe Conway lämnade ett svar som raderades eftersom det borde vara en kommentar. Jag klistrar in det här för allmänheten som inte kan se raderade svar:

Jag fick meddelandet, har bara inte haft tid att göra en ny PL/R-release. Leta efter den i december, men under tiden är den manuella lösningen ovan ganska enkel.



  1. Implementera en Multi-Datacenter Setup för PostgreSQL - Del ett

  2. Återställ en sekvens enligt år, inte med min eller max värde

  3. Kan inte öppna SQLite-databasen från SQLIte Helper Oncreate, när OnCreate utlöses genom att öppna databasen för första gången

  4. Hur REGEXP_INSTR() fungerar i MariaDB