jconway / plr

PL/R - R Procedural Language for PostgreSQL
http://www.joeconway.com
90 stars 42 forks source link

installation fails on 9.2 due to tightened create function casing rules #3

Closed merlinm closed 11 years ago

merlinm commented 12 years ago

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

jconway commented 11 years ago

fixed in latest code