On 11/10/06, Josh Berkus <firstname.lastname@example.org> wrote:
> Actually, you omitted to mention the locking aspects of moving tuples
> around --- exactly how are you going to make that work without breaking
> concurrent scans?
I believe that's the "unsolved technical issue" in the prototype, unless
Pavan has solved it in the last two weeks. Pavan?
When an overflow tuple is copied back to the main heap, the overflow tuple is
marked with a special flag (HEAP_OVERFLOW_MOVEDBACK). Subsequently,
when a backend tries to lock the overflow version of the tuple, it checks the flag
and jumps to the main heap if the flag is set.
We use the same technique to update the correct version of a tuple when a
tuple is moved back to the main heap.