On Fri, 11 Sept 2026 at 08:36, Mario Karuza <[email protected]> wrote: > Memory allocated for copied pass-by-reference Datums was not accounted > against work_mem because tuplesort_putdatum() passed a hardcoded tuplen > of 0 to tuplesort_puttuple_common(). Function free_sort_tuple() adjusts > the accounting by the amount actually allocated, so freeing such a > tuple subtracts an amount that was never added. > > This was introduced in 6ed83d5fa55, which switched non-bounded sorts to > bump contexts. That commit correctly changed the other tuplesort_put*() > functions to compute the size, leaving only this one passing hardcoded > 0.
I wondered if the extra strlen() call in datumGetSize() would result in a slowdown, but looking deeper, it seems like that won't be hit due to lack of sort support for cstring types. I don't see any issues with the patch. I will process it on Monday, to give time in case other people want to look. David
