1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-28 23:42:10 +03:00

Adjust pgstatindex() to give correct answers for indexes larger than

2^31 blocks.  Also fix pg_relpages() for the same case.
Tatsuhito Kasahara
This commit is contained in:
Tom Lane
2008-03-21 03:23:30 +00:00
parent 458c585697
commit d287818eb5
3 changed files with 69 additions and 78 deletions

View File

@ -1,4 +1,4 @@
/* $PostgreSQL: pgsql/contrib/pgstattuple/pgstattuple.sql.in,v 1.15 2007/11/13 04:24:28 momjian Exp $ */
/* $PostgreSQL: pgsql/contrib/pgstattuple/pgstattuple.sql.in,v 1.16 2008/03/21 03:23:30 tgl Exp $ */
-- Adjust this setting to control where the objects get created.
SET search_path = public;
@ -7,12 +7,12 @@ CREATE OR REPLACE FUNCTION pgstattuple(IN relname text,
OUT table_len BIGINT, -- physical table length in bytes
OUT tuple_count BIGINT, -- number of live tuples
OUT tuple_len BIGINT, -- total tuples length in bytes
OUT tuple_percent FLOAT, -- live tuples in %
OUT tuple_percent FLOAT8, -- live tuples in %
OUT dead_tuple_count BIGINT, -- number of dead tuples
OUT dead_tuple_len BIGINT, -- total dead tuples length in bytes
OUT dead_tuple_percent FLOAT, -- dead tuples in %
OUT dead_tuple_percent FLOAT8, -- dead tuples in %
OUT free_space BIGINT, -- free space in bytes
OUT free_percent FLOAT) -- free space in %
OUT free_percent FLOAT8) -- free space in %
AS 'MODULE_PATHNAME', 'pgstattuple'
LANGUAGE C STRICT;
@ -20,36 +20,30 @@ CREATE OR REPLACE FUNCTION pgstattuple(IN reloid oid,
OUT table_len BIGINT, -- physical table length in bytes
OUT tuple_count BIGINT, -- number of live tuples
OUT tuple_len BIGINT, -- total tuples length in bytes
OUT tuple_percent FLOAT, -- live tuples in %
OUT tuple_percent FLOAT8, -- live tuples in %
OUT dead_tuple_count BIGINT, -- number of dead tuples
OUT dead_tuple_len BIGINT, -- total dead tuples length in bytes
OUT dead_tuple_percent FLOAT, -- dead tuples in %
OUT dead_tuple_percent FLOAT8, -- dead tuples in %
OUT free_space BIGINT, -- free space in bytes
OUT free_percent FLOAT) -- free space in %
OUT free_percent FLOAT8) -- free space in %
AS 'MODULE_PATHNAME', 'pgstattuplebyid'
LANGUAGE C STRICT;
--
-- pgstatindex
--
CREATE OR REPLACE FUNCTION pgstatindex(IN relname text,
OUT version int4,
OUT tree_level int4,
OUT index_size int4,
OUT root_block_no int4,
OUT internal_pages int4,
OUT leaf_pages int4,
OUT empty_pages int4,
OUT deleted_pages int4,
OUT avg_leaf_density float8,
OUT leaf_fragmentation float8)
OUT version INT,
OUT tree_level INT,
OUT index_size BIGINT,
OUT root_block_no BIGINT,
OUT internal_pages BIGINT,
OUT leaf_pages BIGINT,
OUT empty_pages BIGINT,
OUT deleted_pages BIGINT,
OUT avg_leaf_density FLOAT8,
OUT leaf_fragmentation FLOAT8)
AS 'MODULE_PATHNAME', 'pgstatindex'
LANGUAGE C STRICT;
--
-- pg_relpages()
--
CREATE OR REPLACE FUNCTION pg_relpages(text)
RETURNS int
CREATE OR REPLACE FUNCTION pg_relpages(IN relname text)
RETURNS BIGINT
AS 'MODULE_PATHNAME', 'pg_relpages'
LANGUAGE C STRICT;