• Andres Freund's avatar
    Use slots in trigger infrastructure, except for the actual invocation. · ff11e7f4
    Andres Freund authored
    In preparation for abstracting table storage, convert trigger.c to
    track tuples in slots. Which also happens to make code calling
    triggers simpler.
    
    As the calling interface for triggers themselves is not changed in
    this patch, HeapTuples still are extracted from the slot at that
    time. But that's handled solely inside trigger.c, not visible to
    callers. It's quite likely that we'll want to revise the external
    trigger interface, but that's a separate large project.
    
    As part of this work the slots used for old/new/return tuples are
    moved from EState into ResultRelInfo, as different updated tables
    might need different slots. The slots are now also now created
    on-demand, which is good both from an efficiency POV, but also makes
    the modifying code simpler.
    
    Author: Andres Freund, Amit Khandekar and Ashutosh Bapat
    Discussion: https://postgr.es/m/20180703070645.wchpu5muyto5n647@alap3.anarazel.de
    ff11e7f4
copy.c 144 KB