1/* contrib/pgstattuple/pgstattuple--1.4--1.5.sql */
2
3-- complain if script is sourced in psql, rather than via ALTER EXTENSION
4\echo Use "ALTER EXTENSION pgstattuple UPDATE TO '1.5'" to load this file. \quit
5
6CREATE OR REPLACE FUNCTION pgstattuple(IN relname text,
7    OUT table_len BIGINT,		-- physical table length in bytes
8    OUT tuple_count BIGINT,		-- number of live tuples
9    OUT tuple_len BIGINT,		-- total tuples length in bytes
10    OUT tuple_percent FLOAT8,		-- live tuples in %
11    OUT dead_tuple_count BIGINT,	-- number of dead tuples
12    OUT dead_tuple_len BIGINT,		-- total dead tuples length in bytes
13    OUT dead_tuple_percent FLOAT8,	-- dead tuples in %
14    OUT free_space BIGINT,		-- free space in bytes
15    OUT free_percent FLOAT8)		-- free space in %
16AS 'MODULE_PATHNAME', 'pgstattuple_v1_5'
17LANGUAGE C STRICT PARALLEL SAFE;
18
19REVOKE EXECUTE ON FUNCTION pgstattuple(text) FROM PUBLIC;
20GRANT EXECUTE ON FUNCTION pgstattuple(text) TO pg_stat_scan_tables;
21
22CREATE OR REPLACE FUNCTION pgstatindex(IN relname text,
23    OUT version INT,
24    OUT tree_level INT,
25    OUT index_size BIGINT,
26    OUT root_block_no BIGINT,
27    OUT internal_pages BIGINT,
28    OUT leaf_pages BIGINT,
29    OUT empty_pages BIGINT,
30    OUT deleted_pages BIGINT,
31    OUT avg_leaf_density FLOAT8,
32    OUT leaf_fragmentation FLOAT8)
33AS 'MODULE_PATHNAME', 'pgstatindex_v1_5'
34LANGUAGE C STRICT PARALLEL SAFE;
35
36REVOKE EXECUTE ON FUNCTION pgstatindex(text) FROM PUBLIC;
37GRANT EXECUTE ON FUNCTION pgstatindex(text) TO pg_stat_scan_tables;
38
39CREATE OR REPLACE FUNCTION pg_relpages(IN relname text)
40RETURNS BIGINT
41AS 'MODULE_PATHNAME', 'pg_relpages_v1_5'
42LANGUAGE C STRICT PARALLEL SAFE;
43
44REVOKE EXECUTE ON FUNCTION pg_relpages(text) FROM PUBLIC;
45GRANT EXECUTE ON FUNCTION pg_relpages(text) TO pg_stat_scan_tables;
46
47/* New stuff in 1.1 begins here */
48
49CREATE OR REPLACE FUNCTION pgstatginindex(IN relname regclass,
50    OUT version INT4,
51    OUT pending_pages INT4,
52    OUT pending_tuples BIGINT)
53AS 'MODULE_PATHNAME', 'pgstatginindex_v1_5'
54LANGUAGE C STRICT PARALLEL SAFE;
55
56REVOKE EXECUTE ON FUNCTION pgstatginindex(regclass) FROM PUBLIC;
57GRANT EXECUTE ON FUNCTION pgstatginindex(regclass) TO pg_stat_scan_tables;
58
59/* New stuff in 1.2 begins here */
60
61CREATE OR REPLACE FUNCTION pgstattuple(IN reloid regclass,
62    OUT table_len BIGINT,		-- physical table length in bytes
63    OUT tuple_count BIGINT,		-- number of live tuples
64    OUT tuple_len BIGINT,		-- total tuples length in bytes
65    OUT tuple_percent FLOAT8,		-- live tuples in %
66    OUT dead_tuple_count BIGINT,	-- number of dead tuples
67    OUT dead_tuple_len BIGINT,		-- total dead tuples length in bytes
68    OUT dead_tuple_percent FLOAT8,	-- dead tuples in %
69    OUT free_space BIGINT,		-- free space in bytes
70    OUT free_percent FLOAT8)		-- free space in %
71AS 'MODULE_PATHNAME', 'pgstattuplebyid_v1_5'
72LANGUAGE C STRICT PARALLEL SAFE;
73
74REVOKE EXECUTE ON FUNCTION pgstattuple(regclass) FROM PUBLIC;
75GRANT EXECUTE ON FUNCTION pgstattuple(regclass) TO pg_stat_scan_tables;
76
77CREATE OR REPLACE FUNCTION pgstatindex(IN relname regclass,
78    OUT version INT,
79    OUT tree_level INT,
80    OUT index_size BIGINT,
81    OUT root_block_no BIGINT,
82    OUT internal_pages BIGINT,
83    OUT leaf_pages BIGINT,
84    OUT empty_pages BIGINT,
85    OUT deleted_pages BIGINT,
86    OUT avg_leaf_density FLOAT8,
87    OUT leaf_fragmentation FLOAT8)
88AS 'MODULE_PATHNAME', 'pgstatindexbyid_v1_5'
89LANGUAGE C STRICT PARALLEL SAFE;
90
91REVOKE EXECUTE ON FUNCTION pgstatindex(regclass) FROM PUBLIC;
92GRANT EXECUTE ON FUNCTION pgstatindex(regclass) TO pg_stat_scan_tables;
93
94CREATE OR REPLACE FUNCTION pg_relpages(IN relname regclass)
95RETURNS BIGINT
96AS 'MODULE_PATHNAME', 'pg_relpagesbyid_v1_5'
97LANGUAGE C STRICT PARALLEL SAFE;
98
99REVOKE EXECUTE ON FUNCTION pg_relpages(regclass) FROM PUBLIC;
100GRANT EXECUTE ON FUNCTION pg_relpages(regclass) TO pg_stat_scan_tables;
101
102/* New stuff in 1.3 begins here */
103
104CREATE OR REPLACE FUNCTION pgstattuple_approx(IN reloid regclass,
105    OUT table_len BIGINT,               -- physical table length in bytes
106    OUT scanned_percent FLOAT8,         -- what percentage of the table's pages was scanned
107    OUT approx_tuple_count BIGINT,      -- estimated number of live tuples
108    OUT approx_tuple_len BIGINT,        -- estimated total length in bytes of live tuples
109    OUT approx_tuple_percent FLOAT8,    -- live tuples in % (based on estimate)
110    OUT dead_tuple_count BIGINT,        -- exact number of dead tuples
111    OUT dead_tuple_len BIGINT,          -- exact total length in bytes of dead tuples
112    OUT dead_tuple_percent FLOAT8,      -- dead tuples in % (based on estimate)
113    OUT approx_free_space BIGINT,       -- estimated free space in bytes
114    OUT approx_free_percent FLOAT8)     -- free space in % (based on estimate)
115AS 'MODULE_PATHNAME', 'pgstattuple_approx_v1_5'
116LANGUAGE C STRICT PARALLEL SAFE;
117
118REVOKE EXECUTE ON FUNCTION pgstattuple_approx(regclass) FROM PUBLIC;
119GRANT EXECUTE ON FUNCTION pgstattuple_approx(regclass) TO pg_stat_scan_tables;
120
121/* New stuff in 1.5 begins here */
122
123CREATE OR REPLACE FUNCTION pgstathashindex(IN relname regclass,
124	OUT version INTEGER,
125	OUT bucket_pages BIGINT,
126	OUT overflow_pages BIGINT,
127	OUT bitmap_pages BIGINT,
128	OUT unused_pages BIGINT,
129	OUT live_items BIGINT,
130	OUT dead_items BIGINT,
131	OUT free_percent FLOAT8)
132AS 'MODULE_PATHNAME', 'pgstathashindex'
133LANGUAGE C STRICT PARALLEL SAFE;
134
135REVOKE EXECUTE ON FUNCTION pgstathashindex(regclass) FROM PUBLIC;
136GRANT EXECUTE ON FUNCTION pgstathashindex(regclass) TO pg_stat_scan_tables;
137