• Andres Freund's avatar
    Rejigger materializing and fetching a HeapTuple from a slot. · 763f2edd
    Andres Freund authored
    Previously materializing a slot always returned a HeapTuple. As
    current work aims to reduce the reliance on HeapTuples (so other
    storage systems can work efficiently), that needs to change. Thus
    split the tasks of materializing a slot (i.e. making it independent
    from the underlying storage / other memory contexts) from fetching a
    HeapTuple from the slot.  For brevity, allow to fetch a HeapTuple from
    a slot and materializing the slot at the same time, controlled by a
    parameter.
    
    For now some callers of ExecFetchSlotHeapTuple, with materialize =
    true, expect that changes to the heap tuple will be reflected in the
    underlying slot.  Those places will be adapted in due course, so while
    not pretty, that's OK for now.
    
    Also rename ExecFetchSlotTuple to ExecFetchSlotHeapTupleDatum and
    ExecFetchSlotTupleDatum to ExecFetchSlotHeapTupleDatum, as it's likely
    that future storage methods will need similar methods. There already
    is ExecFetchSlotMinimalTuple, so the new names make the naming scheme
    more coherent.
    
    Author: Ashutosh Bapat and Andres Freund, with changes by Amit Khandekar
    Discussion: https://postgr.es/m/20181105210039.hh4vvi4vwoq5ba2q@alap3.anarazel.de
    763f2edd
nodeHashjoin.c 46.5 KB