~vcs-imports/mammoth-replicator/trunk

« back to all changes in this revision

Viewing changes to src/test/regress/sql/stats.sql

  • Committer: alvherre
  • Date: 2005-12-16 21:24:52 UTC
  • Revision ID: svn-v4:db760fc0-0f08-0410-9d63-cc6633f64896:trunk:1
Initial import of the REL8_0_3 sources from the Pgsql CVS repository.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
--
 
2
-- Test Statistics Collector
 
3
--
 
4
-- Must be run after tenk2 has been created (by create_table),
 
5
-- populated (by create_misc) and indexed (by create_index).
 
6
--
 
7
 
 
8
-- conditio sine qua non
 
9
SHOW stats_start_collector;  -- must be on
 
10
 
 
11
-- save counters
 
12
CREATE TEMP TABLE prevstats AS
 
13
SELECT t.seq_scan, t.seq_tup_read, t.idx_scan, t.idx_tup_fetch,
 
14
       (b.heap_blks_read + b.heap_blks_hit) AS heap_blks,
 
15
       (b.idx_blks_read + b.idx_blks_hit) AS idx_blks
 
16
  FROM pg_catalog.pg_stat_user_tables AS t,
 
17
       pg_catalog.pg_statio_user_tables AS b
 
18
 WHERE t.relname='tenk2' AND b.relname='tenk2';
 
19
 
 
20
-- enable statistics
 
21
SET stats_block_level = on;
 
22
SET stats_row_level = on;
 
23
 
 
24
-- helper function
 
25
CREATE FUNCTION sleep(interval) RETURNS integer AS '
 
26
DECLARE
 
27
  endtime timestamp;
 
28
BEGIN
 
29
  endtime := timeofday()::timestamp + $1;
 
30
  WHILE timeofday()::timestamp < endtime LOOP
 
31
  END LOOP;
 
32
  RETURN 0;
 
33
END;
 
34
' LANGUAGE 'plpgsql';
 
35
 
 
36
-- do something
 
37
SELECT count(*) FROM tenk2;
 
38
SELECT count(*) FROM tenk2 WHERE unique1 = 1;
 
39
 
 
40
-- let stats collector catch up
 
41
SELECT sleep('0:0:2'::interval);
 
42
 
 
43
-- check effects
 
44
SELECT st.seq_scan >= pr.seq_scan + 1,
 
45
       st.seq_tup_read >= pr.seq_tup_read + cl.reltuples,
 
46
       st.idx_scan >= pr.idx_scan + 1,
 
47
       st.idx_tup_fetch >= pr.idx_tup_fetch + 1
 
48
  FROM pg_stat_user_tables AS st, pg_class AS cl, prevstats AS pr
 
49
 WHERE st.relname='tenk2' AND cl.relname='tenk2';
 
50
SELECT st.heap_blks_read + st.heap_blks_hit >= pr.heap_blks + cl.relpages,
 
51
       st.idx_blks_read + st.idx_blks_hit >= pr.idx_blks + 1
 
52
  FROM pg_statio_user_tables AS st, pg_class AS cl, prevstats AS pr
 
53
 WHERE st.relname='tenk2' AND cl.relname='tenk2';
 
54
 
 
55
-- clean up
 
56
DROP FUNCTION sleep(interval);
 
57
 
 
58
-- End of Stats Test