aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2016-09-15 09:22:52 -0400
committerRobert Haas <rhaas@postgresql.org>2016-09-15 09:30:37 -0400
commitbea38f34a4e601d2ea803a3a6d6b90ee0fe2d2b6 (patch)
tree40f1555bca6cc7e28b02c60c9bdfdb36abb69db7
parentfcd93e4af943fc444a5928355c9471d36f077538 (diff)
downloadpostgresql-bea38f34a4e601d2ea803a3a6d6b90ee0fe2d2b6.tar.gz
postgresql-bea38f34a4e601d2ea803a3a6d6b90ee0fe2d2b6.zip
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
-rw-r--r--contrib/pg_buffercache/pg_buffercache_pages.c4
1 files changed, 3 insertions, 1 deletions
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;