mirror of
https://github.com/postgres/postgres.git
synced 2025-11-19 13:42:17 +03:00
Add ExecCopySlotMinimalTupleExtra().
Allows an "extra" argument that allocates extra memory at the end of the MinimalTuple. This is important for callers that need to store additional data, but do not want to perform an additional allocation. Suggested-by: David Rowley <dgrowleyml@gmail.com> Discussion: https://postgr.es/m/CAApHDvppeqw2pNM-+ahBOJwq2QmC0hOAGsmCpC89QVmEoOvsdg@mail.gmail.com
This commit is contained in:
@@ -1002,7 +1002,7 @@ tuplesort_gettupleslot(Tuplesortstate *state, bool forward, bool copy,
|
||||
*abbrev = stup.datum1;
|
||||
|
||||
if (copy)
|
||||
stup.tuple = heap_copy_minimal_tuple((MinimalTuple) stup.tuple);
|
||||
stup.tuple = heap_copy_minimal_tuple((MinimalTuple) stup.tuple, 0);
|
||||
|
||||
ExecStoreMinimalTuple((MinimalTuple) stup.tuple, slot, copy);
|
||||
return true;
|
||||
|
||||
@@ -787,7 +787,7 @@ tuplestore_putvalues(Tuplestorestate *state, TupleDesc tdesc,
|
||||
MinimalTuple tuple;
|
||||
MemoryContext oldcxt = MemoryContextSwitchTo(state->context);
|
||||
|
||||
tuple = heap_form_minimal_tuple(tdesc, values, isnull);
|
||||
tuple = heap_form_minimal_tuple(tdesc, values, isnull, 0);
|
||||
USEMEM(state, GetMemoryChunkSpace(tuple));
|
||||
|
||||
tuplestore_puttuple_common(state, tuple);
|
||||
@@ -1139,7 +1139,7 @@ tuplestore_gettupleslot(Tuplestorestate *state, bool forward,
|
||||
{
|
||||
if (copy && !should_free)
|
||||
{
|
||||
tuple = heap_copy_minimal_tuple(tuple);
|
||||
tuple = heap_copy_minimal_tuple(tuple, 0);
|
||||
should_free = true;
|
||||
}
|
||||
ExecStoreMinimalTuple(tuple, slot, should_free);
|
||||
@@ -1590,7 +1590,7 @@ copytup_heap(Tuplestorestate *state, void *tup)
|
||||
{
|
||||
MinimalTuple tuple;
|
||||
|
||||
tuple = minimal_tuple_from_heap_tuple((HeapTuple) tup);
|
||||
tuple = minimal_tuple_from_heap_tuple((HeapTuple) tup, 0);
|
||||
USEMEM(state, GetMemoryChunkSpace(tuple));
|
||||
return tuple;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user