mirror of
https://github.com/postgres/postgres.git
synced 2025-12-21 05:21:08 +03:00
Permit super-MaxAllocSize allocations with MemoryContextAllocHuge().
The MaxAllocSize guard is convenient for most callers, because it reduces the need for careful attention to overflow, data type selection, and the SET_VARSIZE() limit. A handful of callers are happy to navigate those hazards in exchange for the ability to allocate a larger chunk. Introduce MemoryContextAllocHuge() and repalloc_huge(). Use this in tuplesort.c and tuplestore.c, enabling internal sorts of up to INT_MAX tuples, a factor-of-48 increase. In particular, B-tree index builds can now benefit from much-larger maintenance_work_mem settings. Reviewed by Stephen Frost, Simon Riggs and Jeff Janes.
This commit is contained in:
@@ -106,7 +106,7 @@ extern void tuplesort_get_stats(Tuplesortstate *state,
|
||||
const char **spaceType,
|
||||
long *spaceUsed);
|
||||
|
||||
extern int tuplesort_merge_order(long allowedMem);
|
||||
extern int tuplesort_merge_order(Size allowedMem);
|
||||
|
||||
/*
|
||||
* These routines may only be called if randomAccess was specified 'true'.
|
||||
|
||||
Reference in New Issue
Block a user