On 2025-Jan-14, David Rowley wrote: > 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.
Maybe it would work to set a new flag in TupleTableSlot->tts_flag so that ExecClearTuple() knows to handle it in some particular way (i.e., just skip the ->clear call altogether), with the idea that the tuple memory belongs elsewhere and must not be freed by ExecClearTuple? -- Álvaro Herrera PostgreSQL Developer — https://www.EnterpriseDB.com/ "Los dioses no protegen a los insensatos. Éstos reciben protección de otros insensatos mejor dotados" (Luis Wu, Mundo Anillo)