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