Re: Reduce TupleHashEntryData struct size by half
David Rowley <dgrowleyml@gmail.com>
From: David Rowley <dgrowleyml@gmail.com>
To: Jeff Davis <pgsql@j-davis.com>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>, pgsql-hackers@postgresql.org
Date: 2025-01-14T09:01:57Z
Lists: pgsql-hackers
On Tue, 14 Jan 2025 at 11:11, Jeff Davis <pgsql@j-davis.com> wrote: > > On Sun, 2025-01-12 at 14:54 +1300, David Rowley wrote: > > I wonder if there's some other better way of doing this. Would it be > > worth having some function like ExecCopySlotMinimalTuple() that > > accepts an additional parameter so that the palloc allocates N more > > bytes at the end? Maybe it's worth hunting around to see if there's > > any other executor nodes that could benefit from that infrastructure. > > That would be convenient, but doesn't seem like a great separation of > responsibilities. Perhaps some API that separated the length > calculation, and accepted a caller-supplied buffer? The trick would be to ensure ExecClearTuple() still works. You obviously don't want to try and pfree() something that isn't a pointer to a palloc'd chunk. I'm not sure what the best API is, but I do see there are other places that might benefit from something that allows this. The two usages of ExecCopySlotMinimalTuple() in nodeMemoize.c are candidates. David
Commits
-
Comment fixups from 626df47ad9.
- a0c7b765372d 18.0 landed
-
Remove 'additional' pointer from TupleHashEntryData.
- 626df47ad9db 18.0 cited
-
Add ExecCopySlotMinimalTupleExtra().
- a0942f441ed6 18.0 landed
-
Create accessor functions for TupleHashEntry.
- 4d143509cbfa 18.0 landed
-
TupleHashTable: store additional data along with tuple.
- e0ece2a981ee 18.0 landed
-
ExecInitAgg: update aggstate->numaggs and ->numtrans earlier.
- 3f482940dbcb 18.0 landed
-
nodeSetOp.c: missing additionalsize for BuildTupleHashTable().
- 32ddfaffd149 18.0 landed
-
Remove unused TupleHashTableData->entrysize.
- 8a96faedc408 18.0 landed
-
Add missing typedefs.list entry for AggStatePerGroupData.
- 834c9e807cf1 18.0 landed