From 0007490e0964d194a606ba79bb11ae1642da3372 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Sat, 20 Aug 2005 23:26:37 +0000 Subject: Convert the arithmetic for shared memory size calculation from 'int' to 'Size' (that is, size_t), and install overflow detection checks in it. This allows us to remove the former arbitrary restrictions on NBuffers etc. It won't make any difference in a 32-bit machine, but in a 64-bit machine you could theoretically have terabytes of shared buffers. (How efficiently we could manage 'em remains to be seen.) Similarly, num_temp_buffers, work_mem, and maintenance_work_mem can be set above 2Gb on a 64-bit machine. Original patch from Koichi Suzuki, additional work by moi. --- src/backend/storage/buffer/freelist.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/backend/storage/buffer/freelist.c') diff --git a/src/backend/storage/buffer/freelist.c b/src/backend/storage/buffer/freelist.c index 247a9abf591..906165638b6 100644 --- a/src/backend/storage/buffer/freelist.c +++ b/src/backend/storage/buffer/freelist.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/storage/buffer/freelist.c,v 1.51 2005/03/04 20:21:06 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/storage/buffer/freelist.c,v 1.52 2005/08/20 23:26:17 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -208,16 +208,16 @@ StrategyHintVacuum(bool vacuum_active) * Note: for somewhat historical reasons, the buffer lookup hashtable size * is also determined here. */ -int +Size StrategyShmemSize(void) { - int size = 0; + Size size = 0; /* size of lookup hash table */ - size += BufTableShmemSize(NBuffers); + size = add_size(size, BufTableShmemSize(NBuffers)); /* size of the shared replacement strategy control block */ - size += MAXALIGN(sizeof(BufferStrategyControl)); + size = add_size(size, MAXALIGN(sizeof(BufferStrategyControl))); return size; } -- cgit v1.2.3