57 lines
2.1 KiB
PL/PgSQL
57 lines
2.1 KiB
PL/PgSQL
create or replace view comp_sizes as
|
|
select size, count(*) as cnt
|
|
from (select cid, count(*) as size from ft group by cid) f
|
|
group by size;
|
|
|
|
create or replace function stat(sc varchar) returns void as
|
|
$$
|
|
DECLARE
|
|
BEGIN
|
|
insert into results
|
|
select distinct
|
|
now() as t,
|
|
sc as scenario,
|
|
(select count(*) from rt) as r_size,
|
|
(select count(*) from ft) as f_size,
|
|
(select count(*) from ct) as c_size,
|
|
(select count(distinct cid) from ft) as num_components,
|
|
coalesce((select cnt from comp_sizes where size = 1), 0) as comp_size1,
|
|
coalesce((select cnt from comp_sizes where size = 2), 0) as comp_size2,
|
|
coalesce((select cnt from comp_sizes where size = 3), 0) as comp_size3,
|
|
coalesce((select sum(cnt) from comp_sizes where size >= 4), 0) as comp_size4_and_more;
|
|
RETURN;
|
|
|
|
END;
|
|
$$
|
|
language plpgsql;
|
|
|
|
create or replace function result_stat(sc varchar, Q varchar, R varchar, F varchar, C varchar) returns void as
|
|
$$
|
|
DECLARE
|
|
BEGIN
|
|
EXECUTE 'create or replace view q_comp_sizes as
|
|
select size, count(*) as cnt
|
|
from (select cid, count(*) as size from ' || F || ' group by cid) f
|
|
group by size;';
|
|
|
|
EXECUTE 'insert into q_results
|
|
select distinct
|
|
now() as t,' ||
|
|
quote_literal(sc) || ' as scenario, ' ||
|
|
quote_literal(Q) || ' as query,
|
|
(select count(*) from ' || R || ') as r_size,
|
|
(select count(*) from ' || F || ') as f_size,
|
|
(select count(*) from ' || C || ') as c_size,
|
|
(select count(distinct cid) from ' || F || ') as num_components,
|
|
coalesce((select cnt from q_comp_sizes where size = 1), 0) as comp_size1,
|
|
coalesce((select cnt from q_comp_sizes where size = 2), 0) as comp_size2,
|
|
coalesce((select cnt from q_comp_sizes where size = 3), 0) as comp_size3,
|
|
coalesce((select sum(cnt) from q_comp_sizes where size >= 4), 0) as comp_size4_and_more;';
|
|
RETURN;
|
|
|
|
END;
|
|
$$
|
|
language plpgsql;
|
|
|
|
|