Hmm ... so all that logic to prune just one tuple chain is dead code, because heap_page_prune_defrag() ignores its pruneoff argument and always passes InvalidOffsetNumber down to heap_page_prune().
While this is certainly a fairly trivial bug, it makes me wonder whether the prune-one-chain logic has ever been active and whether there is any real evidence for having it at all. Was this error introduced in some recent refactoring, or has it always been like that? Given the way that the logic works now, in particular that we always insist on doing defrag, what point is there in not pruning all the chains when we can? regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 5: don't forget to increase your free space map settings