Incorrect CHUNKHDRSZ in nodeAgg.c
David Rowley <dgrowleyml@gmail.com>
From: David Rowley <dgrowleyml@gmail.com>
To: PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>
Date: 2025-01-01T22:55:32Z
Lists: pgsql-hackers
Attachments
- fix_nodeAgg_CHUNKHDRSZ.patch (application/octet-stream) patch
While reading nodeAgg.c, I noticed code that uses CHUNKHDRSZ to help figure out how much memory a tuple uses so the code knows when to spill to disk. CHUNKHDRSZ is currently set to 16 bytes, which was fine when that code was added, but it's a few years out-of-date since c6e0fe1f2 in 2022. The attached adjusts the 16 to sizeof(MemoryChunk), which is normally 8, but 16 in assert builds. The memory accounting should be more accurate with the patch, however, that accounting doesn't account for blocks that the chunks are on. For that reason, I'm thinking of not backpatching this as it will make hash aggregates use a bit more memory than unpatched before spilling, albeit, for most cases, closer to the hash_mem limit, which is when the spilling should be happening. Sound ok? David
Commits
-
HashAgg: use Bump allocator for hash TupleHashTable entries.
- cc721c459d37 18.0 landed
-
Fix outdated CHUNKHDRSZ value in nodeAgg.c
- d93bb8163c9c 18.0 landed