On 9/17/07, Tom Lane <[EMAIL PROTECTED]> wrote:
> 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?
This was introduced in the recent refactoring (the whole discussion of
pruning/defragmentation started after that post) Earlier we used to prune
single chain during index scans. In fact, I intentionally left the code that
way because we are still debating the issue and I wanted to keep the
infrastructure there even if there are no users of it right now.
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?
Yeah, unless we separate pruning and defragmentation, there is
no real value for single chain pruning. Defragmentation is a costly
operation and we would want to prune as many chains before calling