PostgreSQL Source Code git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
progress.h
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * progress.h
4 * Constants used with the progress reporting facilities defined in
5 * backend_status.h. These are possibly interesting to extensions, so we
6 * expose them via this header file. Note that if you update these
7 * constants, you probably also need to update the views based on them
8 * in system_views.sql.
9 *
10 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
11 * Portions Copyright (c) 1994, Regents of the University of California
12 *
13 * src/include/commands/progress.h
14 *
15 *-------------------------------------------------------------------------
16 */
17#ifndef PROGRESS_H
18#define PROGRESS_H
19
20/* Progress parameters for (lazy) vacuum */
21#define PROGRESS_VACUUM_PHASE 0
22#define PROGRESS_VACUUM_TOTAL_HEAP_BLKS 1
23#define PROGRESS_VACUUM_HEAP_BLKS_SCANNED 2
24#define PROGRESS_VACUUM_HEAP_BLKS_VACUUMED 3
25#define PROGRESS_VACUUM_NUM_INDEX_VACUUMS 4
26#define PROGRESS_VACUUM_MAX_DEAD_TUPLE_BYTES 5
27#define PROGRESS_VACUUM_DEAD_TUPLE_BYTES 6
28#define PROGRESS_VACUUM_NUM_DEAD_ITEM_IDS 7
29#define PROGRESS_VACUUM_INDEXES_TOTAL 8
30#define PROGRESS_VACUUM_INDEXES_PROCESSED 9
31#define PROGRESS_VACUUM_DELAY_TIME 10
32
33/* Phases of vacuum (as advertised via PROGRESS_VACUUM_PHASE) */
34#define PROGRESS_VACUUM_PHASE_SCAN_HEAP 1
35#define PROGRESS_VACUUM_PHASE_VACUUM_INDEX 2
36#define PROGRESS_VACUUM_PHASE_VACUUM_HEAP 3
37#define PROGRESS_VACUUM_PHASE_INDEX_CLEANUP 4
38#define PROGRESS_VACUUM_PHASE_TRUNCATE 5
39#define PROGRESS_VACUUM_PHASE_FINAL_CLEANUP 6
40
41/* Progress parameters for analyze */
42#define PROGRESS_ANALYZE_PHASE 0
43#define PROGRESS_ANALYZE_BLOCKS_TOTAL 1
44#define PROGRESS_ANALYZE_BLOCKS_DONE 2
45#define PROGRESS_ANALYZE_EXT_STATS_TOTAL 3
46#define PROGRESS_ANALYZE_EXT_STATS_COMPUTED 4
47#define PROGRESS_ANALYZE_CHILD_TABLES_TOTAL 5
48#define PROGRESS_ANALYZE_CHILD_TABLES_DONE 6
49#define PROGRESS_ANALYZE_CURRENT_CHILD_TABLE_RELID 7
50#define PROGRESS_ANALYZE_DELAY_TIME 8
51
52/* Phases of analyze (as advertised via PROGRESS_ANALYZE_PHASE) */
53#define PROGRESS_ANALYZE_PHASE_ACQUIRE_SAMPLE_ROWS 1
54#define PROGRESS_ANALYZE_PHASE_ACQUIRE_SAMPLE_ROWS_INH 2
55#define PROGRESS_ANALYZE_PHASE_COMPUTE_STATS 3
56#define PROGRESS_ANALYZE_PHASE_COMPUTE_EXT_STATS 4
57#define PROGRESS_ANALYZE_PHASE_FINALIZE_ANALYZE 5
58
59/* Progress parameters for cluster */
60#define PROGRESS_CLUSTER_COMMAND 0
61#define PROGRESS_CLUSTER_PHASE 1
62#define PROGRESS_CLUSTER_INDEX_RELID 2
63#define PROGRESS_CLUSTER_HEAP_TUPLES_SCANNED 3
64#define PROGRESS_CLUSTER_HEAP_TUPLES_WRITTEN 4
65#define PROGRESS_CLUSTER_TOTAL_HEAP_BLKS 5
66#define PROGRESS_CLUSTER_HEAP_BLKS_SCANNED 6
67#define PROGRESS_CLUSTER_INDEX_REBUILD_COUNT 7
68
69/* Phases of cluster (as advertised via PROGRESS_CLUSTER_PHASE) */
70#define PROGRESS_CLUSTER_PHASE_SEQ_SCAN_HEAP 1
71#define PROGRESS_CLUSTER_PHASE_INDEX_SCAN_HEAP 2
72#define PROGRESS_CLUSTER_PHASE_SORT_TUPLES 3
73#define PROGRESS_CLUSTER_PHASE_WRITE_NEW_HEAP 4
74#define PROGRESS_CLUSTER_PHASE_SWAP_REL_FILES 5
75#define PROGRESS_CLUSTER_PHASE_REBUILD_INDEX 6
76#define PROGRESS_CLUSTER_PHASE_FINAL_CLEANUP 7
77
78/* Commands of PROGRESS_CLUSTER */
79#define PROGRESS_CLUSTER_COMMAND_CLUSTER 1
80#define PROGRESS_CLUSTER_COMMAND_VACUUM_FULL 2
81
82/* Progress parameters for CREATE INDEX */
83/* 3, 4 and 5 reserved for "waitfor" metrics */
84#define PROGRESS_CREATEIDX_COMMAND 0
85#define PROGRESS_CREATEIDX_INDEX_OID 6
86#define PROGRESS_CREATEIDX_ACCESS_METHOD_OID 8
87#define PROGRESS_CREATEIDX_PHASE 9 /* AM-agnostic phase # */
88#define PROGRESS_CREATEIDX_SUBPHASE 10 /* phase # filled by AM */
89#define PROGRESS_CREATEIDX_TUPLES_TOTAL 11
90#define PROGRESS_CREATEIDX_TUPLES_DONE 12
91#define PROGRESS_CREATEIDX_PARTITIONS_TOTAL 13
92#define PROGRESS_CREATEIDX_PARTITIONS_DONE 14
93/* 15 and 16 reserved for "block number" metrics */
94
95/* Phases of CREATE INDEX (as advertised via PROGRESS_CREATEIDX_PHASE) */
96#define PROGRESS_CREATEIDX_PHASE_WAIT_1 1
97#define PROGRESS_CREATEIDX_PHASE_BUILD 2
98#define PROGRESS_CREATEIDX_PHASE_WAIT_2 3
99#define PROGRESS_CREATEIDX_PHASE_VALIDATE_IDXSCAN 4
100#define PROGRESS_CREATEIDX_PHASE_VALIDATE_SORT 5
101#define PROGRESS_CREATEIDX_PHASE_VALIDATE_TABLESCAN 6
102#define PROGRESS_CREATEIDX_PHASE_WAIT_3 7
103#define PROGRESS_CREATEIDX_PHASE_WAIT_4 8
104#define PROGRESS_CREATEIDX_PHASE_WAIT_5 9
105
106/*
107 * Subphases of CREATE INDEX, for index_build.
108 */
109#define PROGRESS_CREATEIDX_SUBPHASE_INITIALIZE 1
110/* Additional phases are defined by each AM */
111
112/* Commands of PROGRESS_CREATEIDX */
113#define PROGRESS_CREATEIDX_COMMAND_CREATE 1
114#define PROGRESS_CREATEIDX_COMMAND_CREATE_CONCURRENTLY 2
115#define PROGRESS_CREATEIDX_COMMAND_REINDEX 3
116#define PROGRESS_CREATEIDX_COMMAND_REINDEX_CONCURRENTLY 4
117
118/* Lock holder wait counts */
119#define PROGRESS_WAITFOR_TOTAL 3
120#define PROGRESS_WAITFOR_DONE 4
121#define PROGRESS_WAITFOR_CURRENT_PID 5
122
123/* Block numbers in a generic relation scan */
124#define PROGRESS_SCAN_BLOCKS_TOTAL 15
125#define PROGRESS_SCAN_BLOCKS_DONE 16
126
127/* Progress parameters for pg_basebackup */
128#define PROGRESS_BASEBACKUP_PHASE 0
129#define PROGRESS_BASEBACKUP_BACKUP_TOTAL 1
130#define PROGRESS_BASEBACKUP_BACKUP_STREAMED 2
131#define PROGRESS_BASEBACKUP_TBLSPC_TOTAL 3
132#define PROGRESS_BASEBACKUP_TBLSPC_STREAMED 4
133
134/* Phases of pg_basebackup (as advertised via PROGRESS_BASEBACKUP_PHASE) */
135#define PROGRESS_BASEBACKUP_PHASE_WAIT_CHECKPOINT 1
136#define PROGRESS_BASEBACKUP_PHASE_ESTIMATE_BACKUP_SIZE 2
137#define PROGRESS_BASEBACKUP_PHASE_STREAM_BACKUP 3
138#define PROGRESS_BASEBACKUP_PHASE_WAIT_WAL_ARCHIVE 4
139#define PROGRESS_BASEBACKUP_PHASE_TRANSFER_WAL 5
140
141/* Progress parameters for PROGRESS_COPY */
142#define PROGRESS_COPY_BYTES_PROCESSED 0
143#define PROGRESS_COPY_BYTES_TOTAL 1
144#define PROGRESS_COPY_TUPLES_PROCESSED 2
145#define PROGRESS_COPY_TUPLES_EXCLUDED 3
146#define PROGRESS_COPY_COMMAND 4
147#define PROGRESS_COPY_TYPE 5
148#define PROGRESS_COPY_TUPLES_SKIPPED 6
149
150/* Commands of COPY (as advertised via PROGRESS_COPY_COMMAND) */
151#define PROGRESS_COPY_COMMAND_FROM 1
152#define PROGRESS_COPY_COMMAND_TO 2
153
154/* Types of COPY commands (as advertised via PROGRESS_COPY_TYPE) */
155#define PROGRESS_COPY_TYPE_FILE 1
156#define PROGRESS_COPY_TYPE_PROGRAM 2
157#define PROGRESS_COPY_TYPE_PIPE 3
158#define PROGRESS_COPY_TYPE_CALLBACK 4
159
160#endif