pdbench/census/Queries/statistics.sql

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;