Repository URL to install this package:
|
Version:
18.3-1.pgdg13+1 ▾
|
/*-------------------------------------------------------------------------
*
* procnumber.h
* definition of process number
*
*
* Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* src/include/storage/procnumber.h
*
*-------------------------------------------------------------------------
*/
#ifndef PROCNUMBER_H
#define PROCNUMBER_H
/*
* ProcNumber uniquely identifies an active backend or auxiliary process.
* It's assigned at backend startup after authentication, when the process
* adds itself to the proc array. It is an index into the proc array,
* starting from 0. Note that a ProcNumber can be reused for a different
* backend immediately after a backend exits.
*/
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. We check that the configured
* number of backends does not exceed MAX_BACKENDS in InitializeMaxBackends().
*/
#define MAX_BACKENDS_BITS 18
#define MAX_BACKENDS ((1U << MAX_BACKENDS_BITS)-1)
/*
* Proc number of this backend (same as GetNumberFromPGProc(MyProc))
*/
extern PGDLLIMPORT ProcNumber MyProcNumber;
/* proc number of our parallel session leader, or INVALID_PROC_NUMBER if none */
extern PGDLLIMPORT ProcNumber ParallelLeaderProcNumber;
/*
* The ProcNumber to use for our session's temp relations is normally our own,
* but parallel workers should use their leader's proc number.
*/
#define ProcNumberForTempRelations() \
(ParallelLeaderProcNumber == INVALID_PROC_NUMBER ? MyProcNumber : ParallelLeaderProcNumber)
#endif /* PROCNUMBER_H */