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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/*--------------------------------------------------------------------
* Symbols referenced in this file:
* - pgStatSessionEndCause
*--------------------------------------------------------------------
*/
/* -------------------------------------------------------------------------
*
* pgstat_database.c
* Implementation of database statistics.
*
* This file contains the implementation of database statistics. It is kept
* separate from pgstat.c to enforce the line between the statistics access /
* storage implementation and the details about individual types of
* statistics.
*
* Copyright (c) 2001-2025, PostgreSQL Global Development Group
*
* IDENTIFICATION
* src/backend/utils/activity/pgstat_database.c
* -------------------------------------------------------------------------
*/
static bool ;
__thread SessionEndType pgStatSessionEndCause = DISCONNECT_NORMAL;
/*
* Remove entry for the database being dropped.
*/
/*
* Called from autovacuum.c to report startup of an autovacuum process.
* We are called before InitPostgres is done, so can't rely on MyDatabaseId;
* the db OID must be passed in, instead.
*/
/*
* Report a Hot Standby recovery conflict.
*/
/*
* Report a detected deadlock.
*/
/*
* Allow this backend to later report checksum failures for dboid, even if in
* a critical section at the time of the report.
*
* Without this function having been called first, the backend might need to
* allocate an EntryRef or might need to map in DSM segments. Neither should
* happen in a critical section.
*/
/*
* Report one or more checksum failures.
*
* To be allowed to report checksum failures in critical sections, we require
* pgstat_prepare_report_checksum_failure() to have been called before this
* function is called.
*/
/*
* Report creation of temporary file.
*/
/*
* Notify stats system of a new connection.
*/
/*
* Notify the stats system of a disconnect.
*/
/*
* Support function for the SQL-callable pgstat* functions. Returns
* the collected statistics for one database or NULL. NULL doesn't mean
* that the database doesn't exist, just that there are no statistics, so the
* caller is better off to report ZERO instead.
*/
/*
* Notify the stats system about parallel worker information.
*/
/*
* Subroutine for pgstat_report_stat(): Handle xact commit/rollback and I/O
* timings.
*/
/*
* We report session statistics only for normal backend processes. Parallel
* workers run in parallel, so they don't contribute to session times, even
* though they use CPU time. Walsender processes could be considered here,
* but they have different session characteristics from normal backends (for
* example, they are always "active"), so they would skew session statistics.
*/
/*
* Find or create a local PgStat_StatDBEntry entry for dboid.
*/
/*
* Reset the database's reset timestamp, without resetting the contents of the
* database stats.
*/
/*
* Flush out pending stats for the entry
*
* If nowait is true and the lock could not be immediately acquired, returns
* false without flushing the entry. Otherwise returns true.
*/