pgsql: Fix tuplesort memory accounting for datum sorts on byref types - Mailing list pgsql-committers

From David Rowley
Subject pgsql: Fix tuplesort memory accounting for datum sorts on byref types
Date
Msg-id E1xDhgy-00000000Pgp-4C6R@gemulon.postgresql.org
Whole thread
List pgsql-committers
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 <mkaruza.pg@icloud.com>
Reviewed-by: David Rowley <dgrowleyml@gmail.com>
Reviewed-by: Joao Detomini <joao.detomini@enterprisedb.com>
Discussion: https://postgr.es/m/e9f9f54337cd86a982837763958518cdbf08863c.camel%40icloud.com
Backpatch-through: 17

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/85adc584e2bd3ee6ce1899929fc60afb709b4772

Modified Files
--------------
src/backend/utils/sort/tuplesortvariants.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)


pgsql-committers by date:

Previous
From: Peter Eisentraut
Date:
Subject: pgsql: pgindent: Skip build directories automatically
Next
From: David Rowley
Date:
Subject: pgsql: Fix tuplesort memory accounting for datum sorts on byref types