postgres.git / summary / log / commit / refs

commit    8a503526e455b981718c2d24bd1630fd5b4cf7ac
Author:   Robert Haas <rhaas@postgresql.org>
Date:     Thu Sep 15 13:22:52 2016 +0000

    pg_buffercache: Allow huge allocations.
    
    Otherwise, users who have configured shared_buffers >= 256GB won't
    be able to use this module.  There probably aren't many of those, but
    it doesn't hurt anything to fix it so that it works.
    
    Backpatch to 9.4, where MemoryContextAllocHuge was introduced.  The
    same problem exists in older branches, but there's no easy way to
    fix it there.
    
    KaiGai Kohei


contrib/pg_buffercache/pg_buffercache_pages.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contrib/pg_buffercache/pg_buffercache_pages.c b/contrib/pg_buffercache/pg_buffercache_pages.c index 17b4b6fa6fc..da13bde3595 100644 --- a/contrib/pg_buffercache/pg_buffercache_pages.c +++ b/contrib/pg_buffercache/pg_buffercache_pages.c @@ -124,7 +124,9 @@ pg_buffercache_pages(PG_FUNCTION_ARGS) fctx->tupdesc = BlessTupleDesc(tupledesc); /* Allocate NBuffers worth of BufferCachePagesRec records. */ - fctx->record = (BufferCachePagesRec *) palloc(sizeof(BufferCachePagesRec) * NBuffers); + fctx->record = (BufferCachePagesRec *) + MemoryContextAllocHuge(CurrentMemoryContext, + sizeof(BufferCachePagesRec) * NBuffers); /* Set max calls and remember the user function context. */ funcctx->max_calls = NBuffers; [parent: 593d4e47db7a]