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