OK. Thanks for your input. We will discuss the changes before proceed to code.
1. Change the snapshot satisfies type from function to an enum
2. Try to return always the palloced tuple instead of a pointer to buffer
(This change may have performance impact,so can be done later).
3. Perform a tuple visibility check at heap itself for the page mode scenario also
4. New function ExecSlotCompare to compare two slots or tuple by storing it a temp slot.
5. heap_fetch and heap_lock_tuple returns the palloced tuple, not the pointer to the buffer
6. The index insertion logic decision is moved into heap itself(insert, update), not in executor.
7. Split HeapscanDesc into two and remove it's usage outside heap of the second split
8. Move the tuple traversing and providing the updated record to heap.
Is it fine to create these changes as separate patches and can go if the changes are fine
and doesn't have any impact?
Any comments or additions or deletions to the above list?
Regards,
Haribabu Kommi
Fujitsu Australia