As of postgresql 9.2, you can longer create functions with as language 'C' (you can do 'c' or C). To me, this is an inexplicable compatibility break (I was halfway through submitting a gripey bug report before changing my mind).
Attached patch (vs 8.3.0.13) should fix:
Common subdirectories: plr/doc and plr_fixed/doc
Common subdirectories: plr/expected and plr_fixed/expected
diff -c plr/plr--8.3.0.13.sql plr_fixed/plr--8.3.0.13.sql
*\ plr/plr--8.3.0.13.sql 2011-08-29 17:42:56.000000000 -0500
--- plr_fixed/plr--8.3.0.13.sql 2012-10-03 08:22:52.865124218 -0500
* 2,47 **
CREATE FUNCTION plr_call_handler()
RETURNS LANGUAGE_HANDLER
! AS 'MODULE_PATHNAME' LANGUAGE C;
CREATE LANGUAGE plr HANDLER plr_call_handler;
CREATE OR REPLACE FUNCTION plr_version ()
RETURNS text
AS 'MODULE_PATHNAME','plr_version'
! LANGUAGE 'C';
CREATE OR REPLACE FUNCTION reload_plr_modules ()
RETURNS text
AS 'MODULE_PATHNAME','reload_plr_modules'
! LANGUAGE 'C';
CREATE OR REPLACE FUNCTION install_rcmd (text)
RETURNS text
AS 'MODULE_PATHNAME','install_rcmd'
! LANGUAGE 'C' WITH (isstrict);
REVOKE EXECUTE ON FUNCTION install_rcmd (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_singleton_array (float8)
RETURNS float8[]
AS 'MODULE_PATHNAME','plr_array'
! LANGUAGE 'C' WITH (isstrict);
CREATE OR REPLACE FUNCTION plr_array_push (_float8, float8)
RETURNS float8[]
AS 'MODULE_PATHNAME','plr_array_push'
! LANGUAGE 'C' WITH (isstrict);
CREATE OR REPLACE FUNCTION plr_array_accum (_float8, float8)
RETURNS float8[]
AS 'MODULE_PATHNAME','plr_array_accum'
! LANGUAGE 'C';
CREATE TYPE plr_environ_type AS (name text, value text);
CREATE OR REPLACE FUNCTION plr_environ ()
RETURNS SETOF plr_environ_type
AS 'MODULE_PATHNAME','plr_environ'
! LANGUAGE 'C';
REVOKE EXECUTE ON FUNCTION plr_environ() FROM PUBLIC;
--- 2,47 ----
CREATE FUNCTION plr_call_handler()
RETURNS LANGUAGE_HANDLER
! AS 'MODULE_PATHNAME' LANGUAGE c;
CREATE LANGUAGE plr HANDLER plr_call_handler;
CREATE OR REPLACE FUNCTION plr_version ()
RETURNS text
AS 'MODULE_PATHNAME','plr_version'
! LANGUAGE 'c';
CREATE OR REPLACE FUNCTION reload_plr_modules ()
RETURNS text
AS 'MODULE_PATHNAME','reload_plr_modules'
! LANGUAGE 'c';
CREATE OR REPLACE FUNCTION install_rcmd (text)
RETURNS text
AS 'MODULE_PATHNAME','install_rcmd'
! LANGUAGE 'c' WITH (isstrict);
REVOKE EXECUTE ON FUNCTION install_rcmd (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_singleton_array (float8)
RETURNS float8[]
AS 'MODULE_PATHNAME','plr_array'
! LANGUAGE 'c' WITH (isstrict);
CREATE OR REPLACE FUNCTION plr_array_push (_float8, float8)
RETURNS float8[]
AS 'MODULE_PATHNAME','plr_array_push'
! LANGUAGE 'c' WITH (isstrict);
CREATE OR REPLACE FUNCTION plr_array_accum (_float8, float8)
RETURNS float8[]
AS 'MODULE_PATHNAME','plr_array_accum'
! LANGUAGE 'c';
CREATE TYPE plr_environ_type AS (name text, value text);
CREATE OR REPLACE FUNCTION plr_environ ()
RETURNS SETOF plr_environ_type
AS 'MODULE_PATHNAME','plr_environ'
! LANGUAGE 'c';
REVOKE EXECUTE ON FUNCTION plr_environ() FROM PUBLIC;
* 78,100 **
CREATE OR REPLACE FUNCTION plr_set_rhome (text)
RETURNS text
AS 'MODULE_PATHNAME','plr_set_rhome'
! LANGUAGE 'C' WITH (isstrict);
REVOKE EXECUTE ON FUNCTION plr_set_rhome (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_unset_rhome ()
RETURNS text
AS 'MODULE_PATHNAME','plr_unset_rhome'
! LANGUAGE 'C';
REVOKE EXECUTE ON FUNCTION plr_unset_rhome () FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_set_display (text)
RETURNS text
AS 'MODULE_PATHNAME','plr_set_display'
! LANGUAGE 'C' WITH (isstrict);
REVOKE EXECUTE ON FUNCTION plr_set_display (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_get_raw (bytea)
RETURNS bytea
AS 'MODULE_PATHNAME','plr_get_raw'
! LANGUAGE 'C' WITH (isstrict);
--- 78,100 ----
CREATE OR REPLACE FUNCTION plr_set_rhome (text)
RETURNS text
AS 'MODULE_PATHNAME','plr_set_rhome'
! LANGUAGE 'c' WITH (isstrict);
REVOKE EXECUTE ON FUNCTION plr_set_rhome (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_unset_rhome ()
RETURNS text
AS 'MODULE_PATHNAME','plr_unset_rhome'
! LANGUAGE 'c';
REVOKE EXECUTE ON FUNCTION plr_unset_rhome () FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_set_display (text)
RETURNS text
AS 'MODULE_PATHNAME','plr_set_display'
! LANGUAGE 'c' WITH (isstrict);
REVOKE EXECUTE ON FUNCTION plr_set_display (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_get_raw (bytea)
RETURNS bytea
AS 'MODULE_PATHNAME','plr_get_raw'
! LANGUAGE 'c' WITH (isstrict);
CREATE FUNCTION plr_call_handler()
RETURNS LANGUAGE_HANDLER
! AS 'MODULE_PATHNAME' LANGUAGE C;
CREATE LANGUAGE plr HANDLER plr_call_handler;
CREATE OR REPLACE FUNCTION plr_version ()
RETURNS text
AS 'MODULE_PATHNAME','plr_version'
! LANGUAGE 'C';
CREATE OR REPLACE FUNCTION reload_plr_modules ()
RETURNS text
AS 'MODULE_PATHNAME','reload_plr_modules'
! LANGUAGE 'C';
CREATE OR REPLACE FUNCTION install_rcmd (text)
RETURNS text
AS 'MODULE_PATHNAME','install_rcmd'
! LANGUAGE 'C' WITH (isstrict);
REVOKE EXECUTE ON FUNCTION install_rcmd (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_singleton_array (float8)
RETURNS float8[]
AS 'MODULE_PATHNAME','plr_array'
! LANGUAGE 'C' WITH (isstrict);
CREATE OR REPLACE FUNCTION plr_array_push (_float8, float8)
RETURNS float8[]
AS 'MODULE_PATHNAME','plr_array_push'
! LANGUAGE 'C' WITH (isstrict);
CREATE OR REPLACE FUNCTION plr_array_accum (_float8, float8)
RETURNS float8[]
AS 'MODULE_PATHNAME','plr_array_accum'
! LANGUAGE 'C';
CREATE TYPE plr_environ_type AS (name text, value text);
CREATE OR REPLACE FUNCTION plr_environ ()
RETURNS SETOF plr_environ_type
AS 'MODULE_PATHNAME','plr_environ'
! LANGUAGE 'C';
REVOKE EXECUTE ON FUNCTION plr_environ() FROM PUBLIC;
--- 4,49 ----
CREATE FUNCTION plr_call_handler()
RETURNS LANGUAGE_HANDLER
! AS 'MODULE_PATHNAME' LANGUAGE c;
CREATE LANGUAGE plr HANDLER plr_call_handler;
CREATE OR REPLACE FUNCTION plr_version ()
RETURNS text
AS 'MODULE_PATHNAME','plr_version'
! LANGUAGE 'c';
CREATE OR REPLACE FUNCTION reload_plr_modules ()
RETURNS text
AS 'MODULE_PATHNAME','reload_plr_modules'
! LANGUAGE 'c';
CREATE OR REPLACE FUNCTION install_rcmd (text)
RETURNS text
AS 'MODULE_PATHNAME','install_rcmd'
! LANGUAGE 'c' WITH (isstrict);
REVOKE EXECUTE ON FUNCTION install_rcmd (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_singleton_array (float8)
RETURNS float8[]
AS 'MODULE_PATHNAME','plr_array'
! LANGUAGE 'c' WITH (isstrict);
CREATE OR REPLACE FUNCTION plr_array_push (_float8, float8)
RETURNS float8[]
AS 'MODULE_PATHNAME','plr_array_push'
! LANGUAGE 'c' WITH (isstrict);
CREATE OR REPLACE FUNCTION plr_array_accum (_float8, float8)
RETURNS float8[]
AS 'MODULE_PATHNAME','plr_array_accum'
! LANGUAGE 'c';
CREATE TYPE plr_environ_type AS (name text, value text);
CREATE OR REPLACE FUNCTION plr_environ ()
RETURNS SETOF plr_environ_type
AS 'MODULE_PATHNAME','plr_environ'
! LANGUAGE 'c';
REVOKE EXECUTE ON FUNCTION plr_environ() FROM PUBLIC;
* 80,102 **
CREATE OR REPLACE FUNCTION plr_set_rhome (text)
RETURNS text
AS 'MODULE_PATHNAME','plr_set_rhome'
! LANGUAGE 'C' WITH (isstrict);
REVOKE EXECUTE ON FUNCTION plr_set_rhome (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_unset_rhome ()
RETURNS text
AS 'MODULE_PATHNAME','plr_unset_rhome'
! LANGUAGE 'C';
REVOKE EXECUTE ON FUNCTION plr_unset_rhome () FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_set_display (text)
RETURNS text
AS 'MODULE_PATHNAME','plr_set_display'
! LANGUAGE 'C' WITH (isstrict);
REVOKE EXECUTE ON FUNCTION plr_set_display (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_get_raw (bytea)
RETURNS bytea
AS 'MODULE_PATHNAME','plr_get_raw'
! LANGUAGE 'C' WITH (isstrict);
--- 80,102 ----
CREATE OR REPLACE FUNCTION plr_set_rhome (text)
RETURNS text
AS 'MODULE_PATHNAME','plr_set_rhome'
! LANGUAGE 'c' WITH (isstrict);
REVOKE EXECUTE ON FUNCTION plr_set_rhome (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_unset_rhome ()
RETURNS text
AS 'MODULE_PATHNAME','plr_unset_rhome'
! LANGUAGE 'c';
REVOKE EXECUTE ON FUNCTION plr_unset_rhome () FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_set_display (text)
RETURNS text
AS 'MODULE_PATHNAME','plr_set_display'
! LANGUAGE 'c' WITH (isstrict);
REVOKE EXECUTE ON FUNCTION plr_set_display (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_get_raw (bytea)
RETURNS bytea
AS 'MODULE_PATHNAME','plr_get_raw'
! LANGUAGE 'c' WITH (isstrict);
As of postgresql 9.2, you can longer create functions with as language 'C' (you can do 'c' or C). To me, this is an inexplicable compatibility break (I was halfway through submitting a gripey bug report before changing my mind).
Attached patch (vs 8.3.0.13) should fix: Common subdirectories: plr/doc and plr_fixed/doc Common subdirectories: plr/expected and plr_fixed/expected diff -c plr/plr--8.3.0.13.sql plr_fixed/plr--8.3.0.13.sql *\ plr/plr--8.3.0.13.sql 2011-08-29 17:42:56.000000000 -0500 --- plr_fixed/plr--8.3.0.13.sql 2012-10-03 08:22:52.865124218 -0500
* 2,47 **
CREATE FUNCTION plr_call_handler() RETURNS LANGUAGE_HANDLER ! AS 'MODULE_PATHNAME' LANGUAGE C;
CREATE LANGUAGE plr HANDLER plr_call_handler;
CREATE OR REPLACE FUNCTION plr_version () RETURNS text AS 'MODULE_PATHNAME','plr_version' ! LANGUAGE 'C';
CREATE OR REPLACE FUNCTION reload_plr_modules () RETURNS text AS 'MODULE_PATHNAME','reload_plr_modules' ! LANGUAGE 'C';
CREATE OR REPLACE FUNCTION install_rcmd (text) RETURNS text AS 'MODULE_PATHNAME','install_rcmd' ! LANGUAGE 'C' WITH (isstrict); REVOKE EXECUTE ON FUNCTION install_rcmd (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_singleton_array (float8) RETURNS float8[] AS 'MODULE_PATHNAME','plr_array' ! LANGUAGE 'C' WITH (isstrict);
CREATE OR REPLACE FUNCTION plr_array_push (_float8, float8) RETURNS float8[] AS 'MODULE_PATHNAME','plr_array_push' ! LANGUAGE 'C' WITH (isstrict);
CREATE OR REPLACE FUNCTION plr_array_accum (_float8, float8) RETURNS float8[] AS 'MODULE_PATHNAME','plr_array_accum' ! LANGUAGE 'C';
CREATE TYPE plr_environ_type AS (name text, value text); CREATE OR REPLACE FUNCTION plr_environ () RETURNS SETOF plr_environ_type AS 'MODULE_PATHNAME','plr_environ' ! LANGUAGE 'C';
REVOKE EXECUTE ON FUNCTION plr_environ() FROM PUBLIC;
--- 2,47 ----
CREATE FUNCTION plr_call_handler() RETURNS LANGUAGE_HANDLER ! AS 'MODULE_PATHNAME' LANGUAGE c;
CREATE LANGUAGE plr HANDLER plr_call_handler;
CREATE OR REPLACE FUNCTION plr_version () RETURNS text AS 'MODULE_PATHNAME','plr_version' ! LANGUAGE 'c';
CREATE OR REPLACE FUNCTION reload_plr_modules () RETURNS text AS 'MODULE_PATHNAME','reload_plr_modules' ! LANGUAGE 'c';
CREATE OR REPLACE FUNCTION install_rcmd (text) RETURNS text AS 'MODULE_PATHNAME','install_rcmd' ! LANGUAGE 'c' WITH (isstrict); REVOKE EXECUTE ON FUNCTION install_rcmd (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_singleton_array (float8) RETURNS float8[] AS 'MODULE_PATHNAME','plr_array' ! LANGUAGE 'c' WITH (isstrict);
CREATE OR REPLACE FUNCTION plr_array_push (_float8, float8) RETURNS float8[] AS 'MODULE_PATHNAME','plr_array_push' ! LANGUAGE 'c' WITH (isstrict);
CREATE OR REPLACE FUNCTION plr_array_accum (_float8, float8) RETURNS float8[] AS 'MODULE_PATHNAME','plr_array_accum' ! LANGUAGE 'c';
CREATE TYPE plr_environ_type AS (name text, value text); CREATE OR REPLACE FUNCTION plr_environ () RETURNS SETOF plr_environ_type AS 'MODULE_PATHNAME','plr_environ' ! LANGUAGE 'c';
REVOKE EXECUTE ON FUNCTION plr_environ() FROM PUBLIC;
* 78,100 ** CREATE OR REPLACE FUNCTION plr_set_rhome (text) RETURNS text AS 'MODULE_PATHNAME','plr_set_rhome' ! LANGUAGE 'C' WITH (isstrict); REVOKE EXECUTE ON FUNCTION plr_set_rhome (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_unset_rhome () RETURNS text AS 'MODULE_PATHNAME','plr_unset_rhome' ! LANGUAGE 'C'; REVOKE EXECUTE ON FUNCTION plr_unset_rhome () FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_set_display (text) RETURNS text AS 'MODULE_PATHNAME','plr_set_display' ! LANGUAGE 'C' WITH (isstrict); REVOKE EXECUTE ON FUNCTION plr_set_display (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_get_raw (bytea) RETURNS bytea AS 'MODULE_PATHNAME','plr_get_raw' ! LANGUAGE 'C' WITH (isstrict);
--- 78,100 ---- CREATE OR REPLACE FUNCTION plr_set_rhome (text) RETURNS text AS 'MODULE_PATHNAME','plr_set_rhome' ! LANGUAGE 'c' WITH (isstrict); REVOKE EXECUTE ON FUNCTION plr_set_rhome (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_unset_rhome () RETURNS text AS 'MODULE_PATHNAME','plr_unset_rhome' ! LANGUAGE 'c'; REVOKE EXECUTE ON FUNCTION plr_unset_rhome () FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_set_display (text) RETURNS text AS 'MODULE_PATHNAME','plr_set_display' ! LANGUAGE 'c' WITH (isstrict); REVOKE EXECUTE ON FUNCTION plr_set_display (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_get_raw (bytea) RETURNS bytea AS 'MODULE_PATHNAME','plr_get_raw' ! LANGUAGE 'c' WITH (isstrict);
diff -c plr/plr.sql.in plr_fixed/plr.sql.in *\ plr/plr.sql.in 2011-08-29 17:42:56.000000000 -0500 --- plr_fixed/plr.sql.in 2012-10-03 08:22:09.273128501 -0500
* 4,49 **
CREATE FUNCTION plr_call_handler() RETURNS LANGUAGE_HANDLER ! AS 'MODULE_PATHNAME' LANGUAGE C;
CREATE LANGUAGE plr HANDLER plr_call_handler;
CREATE OR REPLACE FUNCTION plr_version () RETURNS text AS 'MODULE_PATHNAME','plr_version' ! LANGUAGE 'C';
CREATE OR REPLACE FUNCTION reload_plr_modules () RETURNS text AS 'MODULE_PATHNAME','reload_plr_modules' ! LANGUAGE 'C';
CREATE OR REPLACE FUNCTION install_rcmd (text) RETURNS text AS 'MODULE_PATHNAME','install_rcmd' ! LANGUAGE 'C' WITH (isstrict); REVOKE EXECUTE ON FUNCTION install_rcmd (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_singleton_array (float8) RETURNS float8[] AS 'MODULE_PATHNAME','plr_array' ! LANGUAGE 'C' WITH (isstrict);
CREATE OR REPLACE FUNCTION plr_array_push (_float8, float8) RETURNS float8[] AS 'MODULE_PATHNAME','plr_array_push' ! LANGUAGE 'C' WITH (isstrict);
CREATE OR REPLACE FUNCTION plr_array_accum (_float8, float8) RETURNS float8[] AS 'MODULE_PATHNAME','plr_array_accum' ! LANGUAGE 'C';
CREATE TYPE plr_environ_type AS (name text, value text); CREATE OR REPLACE FUNCTION plr_environ () RETURNS SETOF plr_environ_type AS 'MODULE_PATHNAME','plr_environ' ! LANGUAGE 'C';
REVOKE EXECUTE ON FUNCTION plr_environ() FROM PUBLIC;
--- 4,49 ----
CREATE FUNCTION plr_call_handler() RETURNS LANGUAGE_HANDLER ! AS 'MODULE_PATHNAME' LANGUAGE c;
CREATE LANGUAGE plr HANDLER plr_call_handler;
CREATE OR REPLACE FUNCTION plr_version () RETURNS text AS 'MODULE_PATHNAME','plr_version' ! LANGUAGE 'c';
CREATE OR REPLACE FUNCTION reload_plr_modules () RETURNS text AS 'MODULE_PATHNAME','reload_plr_modules' ! LANGUAGE 'c';
CREATE OR REPLACE FUNCTION install_rcmd (text) RETURNS text AS 'MODULE_PATHNAME','install_rcmd' ! LANGUAGE 'c' WITH (isstrict); REVOKE EXECUTE ON FUNCTION install_rcmd (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_singleton_array (float8) RETURNS float8[] AS 'MODULE_PATHNAME','plr_array' ! LANGUAGE 'c' WITH (isstrict);
CREATE OR REPLACE FUNCTION plr_array_push (_float8, float8) RETURNS float8[] AS 'MODULE_PATHNAME','plr_array_push' ! LANGUAGE 'c' WITH (isstrict);
CREATE OR REPLACE FUNCTION plr_array_accum (_float8, float8) RETURNS float8[] AS 'MODULE_PATHNAME','plr_array_accum' ! LANGUAGE 'c';
CREATE TYPE plr_environ_type AS (name text, value text); CREATE OR REPLACE FUNCTION plr_environ () RETURNS SETOF plr_environ_type AS 'MODULE_PATHNAME','plr_environ' ! LANGUAGE 'c';
REVOKE EXECUTE ON FUNCTION plr_environ() FROM PUBLIC;
* 80,102 ** CREATE OR REPLACE FUNCTION plr_set_rhome (text) RETURNS text AS 'MODULE_PATHNAME','plr_set_rhome' ! LANGUAGE 'C' WITH (isstrict); REVOKE EXECUTE ON FUNCTION plr_set_rhome (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_unset_rhome () RETURNS text AS 'MODULE_PATHNAME','plr_unset_rhome' ! LANGUAGE 'C'; REVOKE EXECUTE ON FUNCTION plr_unset_rhome () FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_set_display (text) RETURNS text AS 'MODULE_PATHNAME','plr_set_display' ! LANGUAGE 'C' WITH (isstrict); REVOKE EXECUTE ON FUNCTION plr_set_display (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_get_raw (bytea) RETURNS bytea AS 'MODULE_PATHNAME','plr_get_raw' ! LANGUAGE 'C' WITH (isstrict);
--- 80,102 ---- CREATE OR REPLACE FUNCTION plr_set_rhome (text) RETURNS text AS 'MODULE_PATHNAME','plr_set_rhome' ! LANGUAGE 'c' WITH (isstrict); REVOKE EXECUTE ON FUNCTION plr_set_rhome (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_unset_rhome () RETURNS text AS 'MODULE_PATHNAME','plr_unset_rhome' ! LANGUAGE 'c'; REVOKE EXECUTE ON FUNCTION plr_unset_rhome () FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_set_display (text) RETURNS text AS 'MODULE_PATHNAME','plr_set_display' ! LANGUAGE 'c' WITH (isstrict); REVOKE EXECUTE ON FUNCTION plr_set_display (text) FROM PUBLIC;
CREATE OR REPLACE FUNCTION plr_get_raw (bytea) RETURNS bytea AS 'MODULE_PATHNAME','plr_get_raw' ! LANGUAGE 'c' WITH (isstrict);
Common subdirectories: plr/sql and plr_fixed/sql