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 81 82 83 84 85 86 87 88 89 90 91
|
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 set_eq(
format($$SELECT proargnames FROM pg_proc WHERE proname = %1$L$$,fn),
$$SELECT '{"","edge","cost"}'::TEXT[] $$
);
RETURN QUERY SELECT set_eq(
format($$SELECT proallargtypes FROM pg_proc WHERE proname = %1$L$$, fn),
$$SELECT '{25,20,701}'::OID[] $$
);
END;
$BODY$
LANGUAGE plpgsql VOLATILE;
CREATE OR REPLACE FUNCTION spanntree_bfs_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','bigint']);
RETURN QUERY SELECT has_function(fn, ARRAY['text','anyarray','bigint']);
RETURN QUERY SELECT function_returns(fn, ARRAY['text','bigint','bigint'], 'setof record');
RETURN QUERY SELECT function_returns(fn, ARRAY['text','anyarray','bigint'], 'setof record');
RETURN QUERY SELECT set_eq(
format($$SELECT proargnames FROM pg_proc WHERE proname = %1$L$$,fn),
$$VALUES
('{"","","max_depth","seq","depth","start_vid","node","edge","cost","agg_cost"}'::TEXT[])
$$
);
RETURN QUERY SELECT set_eq(
format($$SELECT proallargtypes FROM pg_proc WHERE proname = %1$L$$, fn),
$$VALUES
('{25,20,20,20,20,20,20,20,701,701}'::OID[]),
('{25,2277,20,20,20,20,20,20,701,701}'::OID[])
$$
);
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');
RETURN QUERY SELECT set_eq(
format($$SELECT proargnames FROM pg_proc WHERE proname = %1$L$$,fn),
$$VALUES
('{"","","","seq","depth","start_vid","node","edge","cost","agg_cost"}'::TEXT[])
$$
);
RETURN QUERY SELECT set_eq(
format($$SELECT proallargtypes FROM pg_proc WHERE proname = %1$L$$, fn),
$$VALUES
('{25,20,701,20,20,20,20,20,701,701}'::OID[]),
('{25,2277,701,20,20,20,20,20,701,701}'::OID[]),
('{25,20,1700,20,20,20,20,20,701,701}'::OID[]),
('{25,2277,1700,20,20,20,20,20,701,701}'::OID[]),
('{25,20,701,20,20,20,20,20,701,701}'::OID[]),
('{25,2277,701,20,20,20,20,20,701,701}'::OID[])
$$
);
END;
$BODY$
LANGUAGE plpgsql VOLATILE;
|