-- -- CREATE_FUNCTION_1 -- CREATE FUNCTION widget_in(cstring) RETURNS widget AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT IMMUTABLE; NOTICE: type "widget" is not yet defined DETAIL: Creating a shell type definition. CREATE FUNCTION widget_out(widget) RETURNS cstring AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT IMMUTABLE; NOTICE: argument type widget is only a shell CREATE FUNCTION int44in(cstring) RETURNS city_budget AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT IMMUTABLE; NOTICE: type "city_budget" is not yet defined DETAIL: Creating a shell type definition. CREATE FUNCTION int44out(city_budget) RETURNS cstring AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT IMMUTABLE; NOTICE: argument type city_budget is only a shell CREATE FUNCTION check_primary_key () RETURNS trigger AS '@libdir@/refint@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION check_foreign_key () RETURNS trigger AS '@libdir@/refint@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION autoinc () RETURNS trigger AS '@libdir@/autoinc@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION trigger_return_old () RETURNS trigger AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION ttdummy () RETURNS trigger AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C; CREATE FUNCTION set_ttdummy (int4) RETURNS int4 AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; CREATE FUNCTION make_tuple_indirect (record) RETURNS record AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C STRICT; CREATE FUNCTION test_atomic_ops() RETURNS bool AS '@libdir@/regress@DLSUFFIX@' LANGUAGE C; -- Tests creating a FDW handler CREATE FUNCTION test_fdw_handler() RETURNS fdw_handler AS '@libdir@/regress@DLSUFFIX@', 'test_fdw_handler' LANGUAGE C; CREATE FUNCTION test_support_func(internal) RETURNS internal AS '@libdir@/regress@DLSUFFIX@', 'test_support_func' LANGUAGE C STRICT; -- Things that shouldn't work: CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL AS 'SELECT ''not an integer'';'; ERROR: return type mismatch in function declared to return integer DETAIL: Actual return type is text. CONTEXT: SQL function "test1" CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL AS 'not even SQL'; ERROR: syntax error at or near "not" LINE 2: AS 'not even SQL'; ^ CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL AS 'SELECT 1, 2, 3;'; ERROR: return type mismatch in function declared to return integer DETAIL: Final statement must return exactly one column. CONTEXT: SQL function "test1" CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL AS 'SELECT $2;'; ERROR: there is no parameter $2 LINE 2: AS 'SELECT $2;'; ^ CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL AS 'a', 'b'; ERROR: only one AS item needed for language "sql" CREATE FUNCTION test1 (int) RETURNS int LANGUAGE C AS 'nosuchfile'; ERROR: could not access file "nosuchfile": No such file or directory CREATE FUNCTION test1 (int) RETURNS int LANGUAGE C AS '@libdir@/regress@DLSUFFIX@', 'nosuchsymbol'; ERROR: could not find function "nosuchsymbol" in file "@libdir@/regress@DLSUFFIX@" CREATE FUNCTION test1 (int) RETURNS int LANGUAGE internal AS 'nosuch'; ERROR: there is no built-in function named "nosuch"