Robert Haas <robertmh...@gmail.com> writes: > On Wed, May 2, 2018 at 11:38 AM, Heikki Linnakangas <hlinn...@iki.fi> wrote: >> To fix, I propose that we change the above so that we always subtract >> tapeSpace, but if there is less than e.g. 32 kB of memory left after that >> (including, if it went below 0), then we bump availMem back up to 32 kB. So >> we'd always reserve 32 kB to hold the tuples, even if that means that we >> exceed 'work_mem' slightly.
> Sounds very reasonable. Agreed. I think that was my code to start with, and the issue certainly didn't occur to me at the time. I don't like the idea of using hardwired "32kB" though; some multiple of TAPE_BUFFER_OVERHEAD seems more plausible. Perhaps MINORDER times TAPE_BUFFER_OVERHEAD would be good? regards, tom lane