1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
CREATE OR REPLACE FUNCTION spanntree_types_check(fn TEXT)
RETURNS SETOF TEXT AS
$BODY$
BEGIN
RETURN QUERY SELECT has_function(fn);
RETURN QUERY SELECT has_function(fn, ARRAY['text']);
RETURN QUERY SELECT function_returns(fn, ARRAY['text'], 'setof record');
RETURN QUERY SELECT function_args_eq(fn,
$$SELECT '{"","edge","cost"}'::TEXT[] $$
);
RETURN QUERY SELECT function_types_eq(fn,
$$VALUES ('{text,int8,float8}'::TEXT[])$$
);
END;
$BODY$
LANGUAGE plpgsql VOLATILE;
CREATE OR REPLACE FUNCTION spanntree_dd_types_check(fn TEXT)
RETURNS SETOF TEXT AS
$BODY$
BEGIN
RETURN QUERY SELECT has_function(fn);
RETURN QUERY SELECT has_function(fn, ARRAY['text','bigint','numeric']);
RETURN QUERY SELECT has_function(fn, ARRAY['text','anyarray','numeric']);
RETURN QUERY SELECT has_function(fn, ARRAY['text','bigint','double precision']);
RETURN QUERY SELECT has_function(fn, ARRAY['text','anyarray','double precision']);
RETURN QUERY SELECT function_returns(fn, ARRAY['text','bigint','numeric'], 'setof record');
RETURN QUERY SELECT function_returns(fn, ARRAY['text','anyarray','numeric'], 'setof record');
RETURN QUERY SELECT function_returns(fn, ARRAY['text','bigint','double precision'], 'setof record');
RETURN QUERY SELECT function_returns(fn, ARRAY['text','anyarray','double precision'], 'setof record');
IF NOT min_version('3.7.0') THEN
RETURN QUERY SELECT function_args_eq(fn,
$$VALUES
('{"","","","seq","depth","start_vid","node","edge","cost","agg_cost"}'::TEXT[])
$$
);
RETURN QUERY SELECT function_types_eq(fn,
$$VALUES
('{text,int8,float8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,anyarray,float8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,int8,numeric,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,anyarray,numeric,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,int8,float8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,anyarray,float8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[])
$$
);
ELSE
RETURN QUERY SELECT function_args_eq(fn,
$$VALUES
('{"","","","seq","depth","start_vid","pred","node","edge","cost","agg_cost"}'::TEXT[])
$$
);
RETURN QUERY SELECT function_types_eq(fn,
$$VALUES
('{text,int8,float8,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,anyarray,float8,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,int8,numeric,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,anyarray,numeric,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,int8,float8,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,anyarray,float8,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[])
$$
);
END IF;
END;
$BODY$
LANGUAGE plpgsql VOLATILE;
|