aboutsummaryrefslogtreecommitdiff
path: root/src/include/storage/procnumber.h
blob: 7cf981ab673273c319f4866ec6b6ed799bd41da7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*-------------------------------------------------------------------------
 *
 * 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)

/*
 * 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 */