mirror of
https://github.com/postgres/postgres.git
synced 2026-02-11 06:43:59 -05:00
The V0 convention is failure prone because we've so far assumed that a function is V0 if PG_FUNCTION_INFO_V1 is missing, leading to crashes if a function was coded against the V1 interface. V0 doesn't allow proper NULL, SRF and toast handling. V0 doesn't offer features that V1 doesn't. Thus remove V0 support and obsolete fmgr README contents relating to it. Author: Andres Freund, with contributions by Peter Eisentraut & Craig Ringer Reviewed-By: Peter Eisentraut, Craig Ringer Discussion: https://postgr.es/m/20161208213441.k3mbno4twhg2qf7g@alap3.anarazel.de
93 lines
2.4 KiB
Text
93 lines
2.4 KiB
Text
--
|
|
-- CREATE_FUNCTION_2
|
|
--
|
|
CREATE FUNCTION hobbies(person)
|
|
RETURNS setof hobbies_r
|
|
AS 'select * from hobbies_r where person = $1.name'
|
|
LANGUAGE SQL;
|
|
|
|
|
|
CREATE FUNCTION hobby_construct(text, text)
|
|
RETURNS hobbies_r
|
|
AS 'select $1 as name, $2 as hobby'
|
|
LANGUAGE SQL;
|
|
|
|
|
|
CREATE FUNCTION hobby_construct_named(name text, hobby text)
|
|
RETURNS hobbies_r
|
|
AS 'select name, hobby'
|
|
LANGUAGE SQL;
|
|
|
|
|
|
CREATE FUNCTION hobbies_by_name(hobbies_r.name%TYPE)
|
|
RETURNS hobbies_r.person%TYPE
|
|
AS 'select person from hobbies_r where name = $1'
|
|
LANGUAGE SQL;
|
|
|
|
|
|
CREATE FUNCTION equipment(hobbies_r)
|
|
RETURNS setof equipment_r
|
|
AS 'select * from equipment_r where hobby = $1.name'
|
|
LANGUAGE SQL;
|
|
|
|
|
|
CREATE FUNCTION equipment_named(hobby hobbies_r)
|
|
RETURNS setof equipment_r
|
|
AS 'select * from equipment_r where equipment_r.hobby = equipment_named.hobby.name'
|
|
LANGUAGE SQL;
|
|
|
|
CREATE FUNCTION equipment_named_ambiguous_1a(hobby hobbies_r)
|
|
RETURNS setof equipment_r
|
|
AS 'select * from equipment_r where hobby = equipment_named_ambiguous_1a.hobby.name'
|
|
LANGUAGE SQL;
|
|
|
|
CREATE FUNCTION equipment_named_ambiguous_1b(hobby hobbies_r)
|
|
RETURNS setof equipment_r
|
|
AS 'select * from equipment_r where equipment_r.hobby = hobby.name'
|
|
LANGUAGE SQL;
|
|
|
|
CREATE FUNCTION equipment_named_ambiguous_1c(hobby hobbies_r)
|
|
RETURNS setof equipment_r
|
|
AS 'select * from equipment_r where hobby = hobby.name'
|
|
LANGUAGE SQL;
|
|
|
|
CREATE FUNCTION equipment_named_ambiguous_2a(hobby text)
|
|
RETURNS setof equipment_r
|
|
AS 'select * from equipment_r where hobby = equipment_named_ambiguous_2a.hobby'
|
|
LANGUAGE SQL;
|
|
|
|
CREATE FUNCTION equipment_named_ambiguous_2b(hobby text)
|
|
RETURNS setof equipment_r
|
|
AS 'select * from equipment_r where equipment_r.hobby = hobby'
|
|
LANGUAGE SQL;
|
|
|
|
|
|
CREATE FUNCTION pt_in_widget(point, widget)
|
|
RETURNS bool
|
|
AS '@libdir@/regress@DLSUFFIX@'
|
|
LANGUAGE C STRICT;
|
|
|
|
CREATE FUNCTION overpaid(emp)
|
|
RETURNS bool
|
|
AS '@libdir@/regress@DLSUFFIX@'
|
|
LANGUAGE C STRICT;
|
|
|
|
CREATE FUNCTION boxarea(box)
|
|
RETURNS float8
|
|
AS '@libdir@/regress@DLSUFFIX@'
|
|
LANGUAGE C STRICT;
|
|
|
|
CREATE FUNCTION interpt_pp(path, path)
|
|
RETURNS point
|
|
AS '@libdir@/regress@DLSUFFIX@'
|
|
LANGUAGE C STRICT;
|
|
|
|
CREATE FUNCTION reverse_name(name)
|
|
RETURNS name
|
|
AS '@libdir@/regress@DLSUFFIX@'
|
|
LANGUAGE C STRICT;
|
|
|
|
--
|
|
-- Function dynamic loading
|
|
--
|
|
LOAD '@libdir@/regress@DLSUFFIX@';
|