• Andres Freund's avatar
    Store table oid and tuple's tid in tuple slots directly. · b8d71745
    Andres Freund authored
    After the introduction of tuple table slots all table AMs need to
    support returning the table oid of the tuple stored in a slot created
    by said AM. It does not make sense to re-implement that in every AM,
    therefore move handling of table OIDs into the TupleTableSlot
    structure itself.  It's possible that we, at a later date, might want
    to get rid of HeapTupleData.t_tableOid entirely, but doing so before
    the abstractions for table AMs are integrated turns out to be too
    hard, so delay that for now.
    
    Similarly, every AM needs to support the concept of a tuple
    identifier (tid / item pointer) for its tuples. It's quite possible
    that we'll generalize the exact form of a tid at a future point (to
    allow for things like index organized tables), but for now many parts
    of the code know about tids, so there's not much point in abstracting
    tids away. Therefore also move into slot (rather than providing API to
    set/get the tid associated with the tuple in a slot).
    
    Once table AM includes insert/updating/deleting tuples, the
    responsibility to set the correct tid after such an action will move
    into that. After that change, code doing such modifications, should
    not have to deal with HeapTuples directly anymore.
    
    Author: Andres Freund, Haribabu Kommi and Ashutosh Bapat
    Discussion: https://postgr.es/m/20180703070645.wchpu5muyto5n647@alap3.anarazel.de
    b8d71745
tuptable.h 16.8 KB