PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Linguaggio procedurale PostgreSQL C non trovato

Probabilmente stai riscontrando questa modifica in PostgreSQL 9.2 (citando qui le note di rilascio):

Nomi di lingua procedurali non più forzatamente minuscoli in CREATEFUNCTION (Robert Haas)

Mentre gli identificatori di lingua senza virgolette sono ancora minuscoli, le stringhe e gli identificatori tra virgolette non sono più forzatamente ridotti. Così, ad esempio, CREATE FUNCTION ... LANGUAGE 'C' non funzionerà più; deve essere scritto 'c', o meglio omettere le virgolette.

Si riflette anche nel manuale di CREATE FUNCTION

nome_lingua

Il nome della lingua in cui è implementata la funzione. Può essere SQL , C , internal o il nome di una lingua procedurale definita dall'utente. Per compatibilità con le versioni precedenti, il nome può essere racchiuso tra virgolette singole.

Citare il nome della lingua è stato sconsigliato almeno dalla versione 7.3 (forse più lunga), ma ovviamente le vecchie abitudini sono dure a morire. Rimozione delle virgolette attorno a 'C' risolve il problema, arrivando a:LANGUAGE c o LANGUAGE C .

PL/R non era pronto per PostgreSQL 9.2 in questo senso, a giudicare dalla pagina del progetto.

Commenti di Joe Conway

Joe Conway ha lasciato una risposta che è stata cancellata perché dovrebbe essere un commento. Lo incollo qui per il pubblico in generale che non può vedere le risposte eliminate:

Ho ricevuto il messaggio, semplicemente non ho avuto il tempo di fare una nuova versione PL/R. Cercala entro dicembre, ma nel frattempo la soluzione manuale sopra indicata è piuttosto semplice.