>> What I am saying is n_ins_since_vacuum should not account for aborted >> inserts. > > It does and from what I can see it should. You need to explain why it should > not. More importantly, convincingly enough to change five year old behavior.
n_ins_since_vacuum was introduced to trigger autovacuum based on the # of inserts committed, and does not care about about dead tuples in this formula. If I have a transaction that rolledback an insert of a million rows, I expect autovacuum to kick in based on the fact there are now 1 million n_dead_tup. n_ins_since_vacuumm is not relevant to the formula for this case. In other words, the reason n_ins_since_vacuum was introduced is to freeze (committed) rows, so it should not need to track dead rows to do what it intends to do. -- Sami Imseih