Fix tuplesort memory accounting for datum sorts on byref types 6ed83d5fa made it so tuplesorts could use a bump.c memory allocator for non-bounded sorts in order to save memory and increase performance. That commit didn't get the memory accounting correct for datum sorts and mistakenly passed 0 bytes to tuplesort_puttuple_common(). That was correct for byval types, but failed to take into account palloc'd memory for byref types.
Fix by using datumGetSize() when using the bump allocator and by using GetMemoryChunkSpace() when not. Backpatch to v17, where 6ed83d5fa was added. Author: Mario Karuza <[email protected]> Reviewed-by: David Rowley <[email protected]> Reviewed-by: Joao Detomini <[email protected]> Discussion: https://postgr.es/m/e9f9f54337cd86a982837763958518cdbf08863c.camel%40icloud.com Backpatch-through: 17 Branch ------ REL_17_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/2414028ab64bcffccfee75790a15b5960de8d095 Modified Files -------------- src/backend/utils/sort/tuplesortvariants.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
