Sorry, I screwed up a little in sending that patch. Here it is again as an attachment.
-- ams
diff --git a/src/test/regress/sql/defs.sql b/src/test/regress/sql/defs.sql new file mode 100644 index 0000000..cf8fff3 --- /dev/null +++ b/src/test/regress/sql/defs.sql @@ -0,0 +1,24 @@ +-- Test pg_get_functiondef() + +CREATE SCHEMA foo; +SET search_path = public,foo,pg_catalog; +CREATE DOMAIN foo."evil domain" as text; +CREATE DOMAIN foo."date" as text; + +CREATE FUNCTION "$$evil"(out foo integer, inout bar date, in "evil domain", in anyelement) + returns setof record stable strict security definer cost 123 rows 2 + language plpgsql as +$f$ + declare r record; + begin + for r in select * from "$$evil"(null,null,null) loop + foo := r.foo; + bar := r.bar; + return next; + end loop; + end; +$f$; + +SELECT pg_get_functiondef('$$evil'::regproc::oid); + +DROP SCHEMA foo CASCADE; diff --git a/src/test/regress/expected/defs.out b/src/test/regress/expected/defs.out new file mode 100644 index 0000000..5d0670a --- /dev/null +++ b/src/test/regress/expected/defs.out @@ -0,0 +1,43 @@ +-- Test pg_get_functiondef() +CREATE SCHEMA foo; +SET search_path = public,foo,pg_catalog; +CREATE DOMAIN foo."evil domain" as text; +CREATE DOMAIN foo."date" as text; +CREATE FUNCTION "$$evil"(out foo integer, inout bar date, in "evil domain", in anyelement) + returns setof record stable strict security definer cost 123 rows 2 + language plpgsql as +$f$ + declare r record; + begin + for r in select * from "$$evil"(null,null,null) loop + foo := r.foo; + bar := r.bar; + return next; + end loop; + end; +$f$; +SELECT pg_get_functiondef('$$evil'::regproc::oid); + pg_get_functiondef +-------------------------------------------------------------------------------------------------------- + CREATE OR REPLACE FUNCTION public."$$evil"(OUT foo integer, INOUT bar date, "evil domain", anyelement) + RETURNS SETOF record + LANGUAGE plpgsql + STABLE STRICT SECURITY DEFINER COST 123 ROWS 2 + AS $function$ + declare r record; + begin + for r in select * from "$$evil"(null,null,null) loop + foo := r.foo; + bar := r.bar; + return next; + end loop; + end; + $function$ + +(1 row) + +DROP SCHEMA foo CASCADE; +NOTICE: drop cascades to 3 other objects +DETAIL: drop cascades to type "evil domain" +drop cascades to type date +drop cascades to function "$$evil"(date,"evil domain",anyelement) diff --git a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule index 3b1d843..f1e3dbc 100644 --- a/src/test/regress/parallel_schedule +++ b/src/test/regress/parallel_schedule @@ -77,7 +77,7 @@ test: misc # ---------- # Another group of parallel tests # ---------- -test: select_views portals_p2 rules foreign_key cluster dependency guc bitmapops combocid tsearch tsdicts foreign_data window +test: select_views portals_p2 rules foreign_key cluster dependency guc bitmapops combocid tsearch tsdicts foreign_data window defs # ---------- # Another group of parallel tests diff --git a/src/test/regress/serial_schedule b/src/test/regress/serial_schedule index b7984ed..5dca5d3 100644 --- a/src/test/regress/serial_schedule +++ b/src/test/regress/serial_schedule @@ -121,3 +121,4 @@ test: with test: xml test: stats test: tablespace +test: defs
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers