c7b25efc创建于 2021年12月29日历史提交
--
-- CREATE_FUNCTION_1
--

CREATE FUNCTION widget_in(cstring)
   RETURNS widget
   AS '@libdir@/regress@DLSUFFIX@'
   LANGUAGE C STRICT;

CREATE FUNCTION widget_out(widget)
   RETURNS cstring
   AS '@libdir@/regress@DLSUFFIX@'
   LANGUAGE C STRICT;

CREATE FUNCTION int44in(cstring)
   RETURNS city_budget
   AS '@libdir@/regress@DLSUFFIX@'
   LANGUAGE C STRICT;

CREATE FUNCTION int44out(city_budget)
   RETURNS cstring
   AS '@libdir@/regress@DLSUFFIX@'
   LANGUAGE C STRICT;

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 funny_dup17 ()
        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;

-- function index with default param
create or replace function foo(a text,b bool default false)
returns text as $$
begin
return a;
end;
$$ language plpgsql strict immutable;

create table tb2(id int, c1 text);
create index on tb2 (foo(c1));
select * from tb2;
DROP TABLE tb2;
DROP FUNCTION foo(a text,b bool);

-- Things that shouldn't work:

CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
    AS 'SELECT ''not an integer'';';

CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
    AS 'not even SQL';

CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
    AS 'SELECT 1, 2, 3;';

CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
    AS 'SELECT $2;';

CREATE FUNCTION test1 (int) RETURNS int LANGUAGE SQL
    AS 'a', 'b';

CREATE FUNCTION test1 (int) RETURNS int LANGUAGE C
    AS 'nosuchfile';

CREATE FUNCTION test1 (int) RETURNS int LANGUAGE C
    AS '@libdir@/regress@DLSUFFIX@', 'nosuchsymbol';

CREATE FUNCTION test1 (int) RETURNS int LANGUAGE internal
    AS 'nosuch';