Hi,

I found that pg_class.reltuples of brin indexes can be either the
number of index tuples or the number of heap tuples.

=# create table test as select generate_series(1,100000) as c;
=# create index test_brin on test using brin (c);
=# analyze test;
=# select relname, reltuples, relpages from pg_class where relname in
('test', 'test_brin');
  relname  | reltuples | relpages
-----------+-----------+----------
 test      |     100000 |       443
 test_brin |     100000 |        3
(2 rows)

=# vacuum test;
=# select relname, reltuples, relpages from pg_class where relname in
('test', 'test_brin');
  relname  | reltuples | relpages
-----------+-----------+----------
 test      |     100000 |       443
 test_brin |         3 |        3
(2 rows)

If I understand correctly pg_class.reltuples of indexes should have
the number of index tuples but especially for brin indexes it would be
hard to estimate it in the analyze code. I thought that we can change
brinvacuumcleanup so that it returns the estimated number of index
tuples and do vac_update_relstats using that value but it would break
API contract. Better ideas?

Regards,

--
Masahiko Sawada
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center

Reply via email to