• Andres Freund's avatar
    Reduce memory usage of targetlist SRFs. · 84ad4b03
    Andres Freund authored
    Previously nodeProjectSet only released memory once per input tuple,
    rather than once per returned tuple. If the computation of an
    individual returned tuple requires a lot of memory, that can lead to
    problems.
    
    Instead change things so that the expression context can be reset once
    per output tuple, which requires a new memory context to store SRF
    arguments in.
    
    This is a longstanding issue, but was hard to fix before 9.6, due to
    the way tSRFs where evaluated. But it's fairly easy to fix now. We
    could backpatch this into 10, but given there've been fewc omplaints
    that doesn't seem worth the risk so far.
    
    Reported-By: Lucas Fairchild
    Author: Andres Freund, per discussion with Tom Lane
    Discussion: https://postgr.es/m/4514.1507318623@sss.pgh.pa.us
    84ad4b03
executor.h 20.8 KB