aboutsummaryrefslogtreecommitdiff
path: root/src/include/storage/backendid.h
blob: 01387723f79d73b2ffd34094ee99f7ef6ea9ad8d (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
/*-------------------------------------------------------------------------
 *
 * backendid.h
 *	  POSTGRES backend id communication definitions
 *
 *
 * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
 * Portions Copyright (c) 1994, Regents of the University of California
 *
 * src/include/storage/backendid.h
 *
 *-------------------------------------------------------------------------
 */
#ifndef BACKENDID_H
#define BACKENDID_H

/*
 * BackendId uniquely identifies an active backend or auxiliary process.  It's
 * assigned at backend startup after authentication.  Note that a backend ID
 * can be reused for a different backend immediately after a backend exits.
 *
 * Backend IDs are assigned starting from 1. For historical reasons, BackendId
 * 0 is unused, but InvalidBackendId is defined as -1.
 */
typedef int BackendId;

#define InvalidBackendId		(-1)

extern PGDLLIMPORT BackendId MyBackendId;	/* backend id of this backend */

/* backend id of our parallel session leader, or InvalidBackendId if none */
extern PGDLLIMPORT BackendId ParallelLeaderBackendId;

/*
 * The BackendId to use for our session's temp relations is normally our own,
 * but parallel workers should use their leader's ID.
 */
#define BackendIdForTempRelations() \
	(ParallelLeaderBackendId == InvalidBackendId ? MyBackendId : ParallelLeaderBackendId)

#endif							/* BACKENDID_H */