• Jeff Davis's avatar
    In array_agg(), don't create a new context for every group. · b419865a
    Jeff Davis authored
    Previously, each new array created a new memory context that started
    out at 8kB. This is incredibly wasteful when there are lots of small
    groups of just a few elements each.
    
    Change initArrayResult() and friends to accept a "subcontext" argument
    to indicate whether the caller wants the ArrayBuildState allocated in
    a new subcontext or not. If not, it can no longer be released
    separately from the rest of the memory context.
    
    Fixes bug report by Frank van Vugt on 2013-10-19.
    
    Tomas Vondra. Reviewed by Ali Akbar, Tom Lane, and me.
    b419865a
nodeSubplan.c 37.4 KB