Thread: pgsql: Convert the arithmetic for shared memory size calculation from
pgsql: Convert the arithmetic for shared memory size calculation from
From
tgl@svr1.postgresql.org (Tom Lane)
Date:
Log Message: ----------- 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. Modified Files: -------------- pgsql: configure (r1.446 -> r1.447) (http://developer.postgresql.org/cvsweb.cgi/pgsql/configure.diff?r1=1.446&r2=1.447) configure.in (r1.419 -> r1.420) (http://developer.postgresql.org/cvsweb.cgi/pgsql/configure.in.diff?r1=1.419&r2=1.420) pgsql/src/backend/access/transam: clog.c (r1.31 -> r1.32) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/clog.c.diff?r1=1.31&r2=1.32) multixact.c (r1.7 -> r1.8) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/multixact.c.diff?r1=1.7&r2=1.8) slru.c (r1.26 -> r1.27) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/slru.c.diff?r1=1.26&r2=1.27) subtrans.c (r1.9 -> r1.10) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/subtrans.c.diff?r1=1.9&r2=1.10) twophase.c (r1.9 -> r1.10) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/twophase.c.diff?r1=1.9&r2=1.10) xlog.c (r1.215 -> r1.216) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/xlog.c.diff?r1=1.215&r2=1.216) pgsql/src/backend/commands: vacuumlazy.c (r1.56 -> r1.57) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/vacuumlazy.c.diff?r1=1.56&r2=1.57) pgsql/src/backend/port: sysv_shmem.c (r1.42 -> r1.43) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/port/sysv_shmem.c.diff?r1=1.42&r2=1.43) pgsql/src/backend/postmaster: bgwriter.c (r1.18 -> r1.19) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/postmaster/bgwriter.c.diff?r1=1.18&r2=1.19) postmaster.c (r1.466 -> r1.467) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/postmaster/postmaster.c.diff?r1=1.466&r2=1.467) pgsql/src/backend/storage/buffer: buf_init.c (r1.75 -> r1.76) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/buffer/buf_init.c.diff?r1=1.75&r2=1.76) buf_table.c (r1.41 -> r1.42) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/buffer/buf_table.c.diff?r1=1.41&r2=1.42) freelist.c (r1.51 -> r1.52) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/buffer/freelist.c.diff?r1=1.51&r2=1.52) localbuf.c (r1.68 -> r1.69) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/buffer/localbuf.c.diff?r1=1.68&r2=1.69) pgsql/src/backend/storage/freespace: freespace.c (r1.47 -> r1.48) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/freespace/freespace.c.diff?r1=1.47&r2=1.48) pgsql/src/backend/storage/ipc: ipci.c (r1.77 -> r1.78) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/ipc/ipci.c.diff?r1=1.77&r2=1.78) pmsignal.c (r1.18 -> r1.19) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/ipc/pmsignal.c.diff?r1=1.18&r2=1.19) procarray.c (r1.5 -> r1.6) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/ipc/procarray.c.diff?r1=1.5&r2=1.6) shmem.c (r1.84 -> r1.85) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/ipc/shmem.c.diff?r1=1.84&r2=1.85) sinval.c (r1.76 -> r1.77) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/ipc/sinval.c.diff?r1=1.76&r2=1.77) sinvaladt.c (r1.59 -> r1.60) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/ipc/sinvaladt.c.diff?r1=1.59&r2=1.60) pgsql/src/backend/storage/lmgr: lock.c (r1.156 -> r1.157) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/lmgr/lock.c.diff?r1=1.156&r2=1.157) lwlock.c (r1.28 -> r1.29) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/lmgr/lwlock.c.diff?r1=1.28&r2=1.29) proc.c (r1.162 -> r1.163) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/storage/lmgr/proc.c.diff?r1=1.162&r2=1.163) pgsql/src/backend/utils/hash: dynahash.c (r1.63 -> r1.64) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/hash/dynahash.c.diff?r1=1.63&r2=1.64) pgsql/src/backend/utils/misc: guc.c (r1.283 -> r1.284) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/misc/guc.c.diff?r1=1.283&r2=1.284) postgresql.conf.sample (r1.158 -> r1.159) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/misc/postgresql.conf.sample.diff?r1=1.158&r2=1.159) pgsql/src/include/access: clog.h (r1.13 -> r1.14) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/clog.h.diff?r1=1.13&r2=1.14) multixact.h (r1.5 -> r1.6) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/multixact.h.diff?r1=1.5&r2=1.6) slru.h (r1.12 -> r1.13) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/slru.h.diff?r1=1.12&r2=1.13) subtrans.h (r1.6 -> r1.7) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/subtrans.h.diff?r1=1.6&r2=1.7) twophase.h (r1.4 -> r1.5) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/twophase.h.diff?r1=1.4&r2=1.5) xlog.h (r1.67 -> r1.68) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/xlog.h.diff?r1=1.67&r2=1.68) pgsql/src/include: pg_config.h.in (r1.86 -> r1.87) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/pg_config.h.in.diff?r1=1.86&r2=1.87) pgsql/src/include/postmaster: bgwriter.h (r1.6 -> r1.7) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/postmaster/bgwriter.h.diff?r1=1.6&r2=1.7) postmaster.h (r1.10 -> r1.11) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/postmaster/postmaster.h.diff?r1=1.10&r2=1.11) pgsql/src/include/storage: buf_internals.h (r1.78 -> r1.79) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/buf_internals.h.diff?r1=1.78&r2=1.79) bufmgr.h (r1.95 -> r1.96) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/bufmgr.h.diff?r1=1.95&r2=1.96) freespace.h (r1.17 -> r1.18) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/freespace.h.diff?r1=1.17&r2=1.18) lock.h (r1.89 -> r1.90) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/lock.h.diff?r1=1.89&r2=1.90) lwlock.h (r1.21 -> r1.22) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/lwlock.h.diff?r1=1.21&r2=1.22) pg_shmem.h (r1.14 -> r1.15) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/pg_shmem.h.diff?r1=1.14&r2=1.15) proc.h (r1.80 -> r1.81) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/proc.h.diff?r1=1.80&r2=1.81) procarray.h (r1.4 -> r1.5) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/procarray.h.diff?r1=1.4&r2=1.5) shmem.h (r1.44 -> r1.45) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/shmem.h.diff?r1=1.44&r2=1.45) sinval.h (r1.41 -> r1.42) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/sinval.h.diff?r1=1.41&r2=1.42) sinvaladt.h (r1.38 -> r1.39) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/sinvaladt.h.diff?r1=1.38&r2=1.39) pgsql/src/include/utils: hsearch.h (r1.39 -> r1.40) (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/utils/hsearch.h.diff?r1=1.39&r2=1.40)