mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
Fix pgstattuple functions to use regclass-type as the argument.
This allows us to specify the target relation with several expressions, 'relname', 'schemaname.relname' and OID in all pgstattuple functions. pgstatindex() and pg_relpages() could not accept OID as the argument so far. Per discussion on -hackers, we decided to keep two types of interfaces, with regclass-type and TEXT-type argument, for each pgstattuple function because of the backward-compatibility issue. The functions which have TEXT-type argument will be deprecated in the future release. Patch by Satoshi Nagayasu, reviewed by Rushabh Lathia and Fujii Masao.
This commit is contained in:
@ -5,24 +5,78 @@ CREATE EXTENSION pgstattuple;
|
||||
-- indexes should be that.
|
||||
--
|
||||
create table test (a int primary key, b int[]);
|
||||
select * from pgstattuple('test');
|
||||
table_len | tuple_count | tuple_len | tuple_percent | dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space | free_percent
|
||||
-----------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+--------------
|
||||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
|
||||
(1 row)
|
||||
|
||||
select * from pgstattuple('test'::text);
|
||||
table_len | tuple_count | tuple_len | tuple_percent | dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space | free_percent
|
||||
-----------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+--------------
|
||||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
|
||||
(1 row)
|
||||
|
||||
select * from pgstattuple('test'::name);
|
||||
table_len | tuple_count | tuple_len | tuple_percent | dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space | free_percent
|
||||
-----------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+--------------
|
||||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
|
||||
(1 row)
|
||||
|
||||
select * from pgstattuple('test'::regclass);
|
||||
table_len | tuple_count | tuple_len | tuple_percent | dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space | free_percent
|
||||
-----------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+--------------
|
||||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
|
||||
(1 row)
|
||||
|
||||
select pgstattuple(oid) from pg_class where relname = 'test';
|
||||
pgstattuple
|
||||
---------------------
|
||||
(0,0,0,0,0,0,0,0,0)
|
||||
(1 row)
|
||||
|
||||
select pgstattuple(relname) from pg_class where relname = 'test';
|
||||
pgstattuple
|
||||
---------------------
|
||||
(0,0,0,0,0,0,0,0,0)
|
||||
(1 row)
|
||||
|
||||
select * from pgstatindex('test_pkey');
|
||||
version | tree_level | index_size | root_block_no | internal_pages | leaf_pages | empty_pages | deleted_pages | avg_leaf_density | leaf_fragmentation
|
||||
---------+------------+------------+---------------+----------------+------------+-------------+---------------+------------------+--------------------
|
||||
2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | NaN | NaN
|
||||
(1 row)
|
||||
|
||||
select * from pgstatindex('test_pkey'::text);
|
||||
version | tree_level | index_size | root_block_no | internal_pages | leaf_pages | empty_pages | deleted_pages | avg_leaf_density | leaf_fragmentation
|
||||
---------+------------+------------+---------------+----------------+------------+-------------+---------------+------------------+--------------------
|
||||
2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | NaN | NaN
|
||||
(1 row)
|
||||
|
||||
select * from pgstatindex('test_pkey'::name);
|
||||
version | tree_level | index_size | root_block_no | internal_pages | leaf_pages | empty_pages | deleted_pages | avg_leaf_density | leaf_fragmentation
|
||||
---------+------------+------------+---------------+----------------+------------+-------------+---------------+------------------+--------------------
|
||||
2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | NaN | NaN
|
||||
(1 row)
|
||||
|
||||
select * from pgstatindex('test_pkey'::regclass);
|
||||
version | tree_level | index_size | root_block_no | internal_pages | leaf_pages | empty_pages | deleted_pages | avg_leaf_density | leaf_fragmentation
|
||||
---------+------------+------------+---------------+----------------+------------+-------------+---------------+------------------+--------------------
|
||||
2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | NaN | NaN
|
||||
(1 row)
|
||||
|
||||
select pgstatindex(oid) from pg_class where relname = 'test_pkey';
|
||||
pgstatindex
|
||||
---------------------------
|
||||
(2,0,0,0,0,0,0,0,NaN,NaN)
|
||||
(1 row)
|
||||
|
||||
select pgstatindex(relname) from pg_class where relname = 'test_pkey';
|
||||
pgstatindex
|
||||
---------------------------
|
||||
(2,0,0,0,0,0,0,0,NaN,NaN)
|
||||
(1 row)
|
||||
|
||||
select pg_relpages('test');
|
||||
pg_relpages
|
||||
-------------
|
||||
@ -35,6 +89,36 @@ select pg_relpages('test_pkey');
|
||||
1
|
||||
(1 row)
|
||||
|
||||
select pg_relpages('test_pkey'::text);
|
||||
pg_relpages
|
||||
-------------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
select pg_relpages('test_pkey'::name);
|
||||
pg_relpages
|
||||
-------------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
select pg_relpages('test_pkey'::regclass);
|
||||
pg_relpages
|
||||
-------------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
select pg_relpages(oid) from pg_class where relname = 'test_pkey';
|
||||
pg_relpages
|
||||
-------------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
select pg_relpages(relname) from pg_class where relname = 'test_pkey';
|
||||
pg_relpages
|
||||
-------------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
create index test_ginidx on test using gin (b);
|
||||
select * from pgstatginindex('test_ginidx');
|
||||
version | pending_pages | pending_tuples
|
||||
|
Reference in New Issue
Block a user