I wrote: > I'm thinking that we really need to upgrade vacuum's reporting totals > so that it accounts in some more-honest way for pre-existing dead > line pointers. The patch as it stands has made the reporting even more > confusing, rather than less so.
Here's a couple of ideas about that: 1. Ignore heap_page_prune's activity altogether, on the grounds that it's just random chance that any cleanup done there was done during VACUUM and not some preceding DML operation. Make tups_vacuumed be the count of dead line pointers removed. The advantage of this way is that tups_vacuumed would become independent of previous non-VACUUM pruning activity, as well as preceding index-cleanup-disabled VACUUMs. But maybe it's hiding too much information. 2. Have heap_page_prune count, and add to tups_vacuumed, only HOT tuples that it deleted entirely. The action of replacing a DEAD root tuple with a dead line pointer doesn't count for anything. Then also add the count of dead line pointers removed to tups_vacuumed. Approach #2 is closer to the way we've defined tups_vacuumed up to now, but I think it'd be more realistic in cases where previous pruning or index-cleanup-disabled vacuums have left lots of dead line pointers. I'm not especially wedded to either of these --- any other ideas? regards, tom lane