• Tom Lane's avatar
    Recent changes in memory management in tuplesort.c had a problem: the · c65ab0bf
    Tom Lane authored
    case where we run low on array slots before we run low on memory is much
    more probable than I had thought, and so it's important to treat each
    tape fairly in that case.  To fix this, track per-tape slot allocations
    just like we track per-tape space allocation.  Also, in the FINALMERGE
    code path avoid scanning all the input tapes when we really only need to
    read from one.  This should fix poor behavior with very large work_mem
    as exhibited by Stefan Kaltenbrunner.
    I didn't do anything about putting an upper bound on the number of tapes,
    but maybe we should still consider that.
    c65ab0bf
tuplesort.c 81.4 KB