mirror of
https://github.com/postgres/postgres.git
synced 2025-10-25 13:17:41 +03:00
Move MAX_BACKENDS to procnumber.h
MAX_BACKENDS influences many things besides postmaster. I e.g. noticed that we don't have static assertions ensuring BUF_REFCOUNT_MASK is big enough for MAX_BACKENDS, adding them would require including postmaster.h in buf_internals.h which doesn't seem right. While at that, add MAX_BACKENDS_BITS, as that's useful in various places for static assertions (to be added in subsequent commits). Reviewed-by: Thomas Munro <thomas.munro@gmail.com> Discussion: https://postgr.es/m/wptizm4qt6yikgm2pt52xzyv6ycmqiutloyvypvmagn7xvqkce@d4xuv3mylpg4
This commit is contained in:
@@ -25,6 +25,19 @@ typedef int ProcNumber;
|
||||
|
||||
#define INVALID_PROC_NUMBER (-1)
|
||||
|
||||
/*
|
||||
* Note: MAX_BACKENDS_BITS is 18 as that is the space available for buffer
|
||||
* refcounts in buf_internals.h. This limitation could be lifted by using a
|
||||
* 64bit state; but it's unlikely to be worthwhile as 2^18-1 backends exceed
|
||||
* currently realistic configurations. Even if that limitation were removed,
|
||||
* we still could not a) exceed 2^23-1 because inval.c stores the ProcNumber
|
||||
* as a 3-byte signed integer, b) INT_MAX/4 because some places compute
|
||||
* 4*MaxBackends without any overflow check. This is rechecked in the
|
||||
* relevant GUC check hooks and in RegisterBackgroundWorker().
|
||||
*/
|
||||
#define MAX_BACKENDS_BITS 18
|
||||
#define MAX_BACKENDS ((1U << MAX_BACKENDS_BITS)-1)
|
||||
|
||||
/*
|
||||
* Proc number of this backend (same as GetNumberFromPGProc(MyProc))
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user