PostgreSQL Source Code  git master
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  * pgstat.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-2019, 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_TUPLES 5
27 #define PROGRESS_VACUUM_NUM_DEAD_TUPLES 6
28 
29 /* Phases of vacuum (as advertised via PROGRESS_VACUUM_PHASE) */
30 #define PROGRESS_VACUUM_PHASE_SCAN_HEAP 1
31 #define PROGRESS_VACUUM_PHASE_VACUUM_INDEX 2
32 #define PROGRESS_VACUUM_PHASE_VACUUM_HEAP 3
33 #define PROGRESS_VACUUM_PHASE_INDEX_CLEANUP 4
34 #define PROGRESS_VACUUM_PHASE_TRUNCATE 5
35 #define PROGRESS_VACUUM_PHASE_FINAL_CLEANUP 6
36 
37 /* Progress parameters for cluster */
38 #define PROGRESS_CLUSTER_COMMAND 0
39 #define PROGRESS_CLUSTER_PHASE 1
40 #define PROGRESS_CLUSTER_INDEX_RELID 2
41 #define PROGRESS_CLUSTER_HEAP_TUPLES_SCANNED 3
42 #define PROGRESS_CLUSTER_HEAP_TUPLES_WRITTEN 4
43 #define PROGRESS_CLUSTER_TOTAL_HEAP_BLKS 5
44 #define PROGRESS_CLUSTER_HEAP_BLKS_SCANNED 6
45 #define PROGRESS_CLUSTER_INDEX_REBUILD_COUNT 7
46 
47 /* Phases of cluster (as advertised via PROGRESS_CLUSTER_PHASE) */
48 #define PROGRESS_CLUSTER_PHASE_SEQ_SCAN_HEAP 1
49 #define PROGRESS_CLUSTER_PHASE_INDEX_SCAN_HEAP 2
50 #define PROGRESS_CLUSTER_PHASE_SORT_TUPLES 3
51 #define PROGRESS_CLUSTER_PHASE_WRITE_NEW_HEAP 4
52 #define PROGRESS_CLUSTER_PHASE_SWAP_REL_FILES 5
53 #define PROGRESS_CLUSTER_PHASE_REBUILD_INDEX 6
54 #define PROGRESS_CLUSTER_PHASE_FINAL_CLEANUP 7
55 
56 /* Commands of PROGRESS_CLUSTER */
57 #define PROGRESS_CLUSTER_COMMAND_CLUSTER 1
58 #define PROGRESS_CLUSTER_COMMAND_VACUUM_FULL 2
59 
60 /* Progress parameters for CREATE INDEX */
61 /* 3, 4 and 5 reserved for "waitfor" metrics */
62 #define PROGRESS_CREATEIDX_COMMAND 0
63 #define PROGRESS_CREATEIDX_INDEX_OID 6
64 #define PROGRESS_CREATEIDX_ACCESS_METHOD_OID 8
65 #define PROGRESS_CREATEIDX_PHASE 9 /* AM-agnostic phase # */
66 #define PROGRESS_CREATEIDX_SUBPHASE 10 /* phase # filled by AM */
67 #define PROGRESS_CREATEIDX_TUPLES_TOTAL 11
68 #define PROGRESS_CREATEIDX_TUPLES_DONE 12
69 #define PROGRESS_CREATEIDX_PARTITIONS_TOTAL 13
70 #define PROGRESS_CREATEIDX_PARTITIONS_DONE 14
71 /* 15 and 16 reserved for "block number" metrics */
72 
73 /* Phases of CREATE INDEX (as advertised via PROGRESS_CREATEIDX_PHASE) */
74 #define PROGRESS_CREATEIDX_PHASE_WAIT_1 1
75 #define PROGRESS_CREATEIDX_PHASE_BUILD 2
76 #define PROGRESS_CREATEIDX_PHASE_WAIT_2 3
77 #define PROGRESS_CREATEIDX_PHASE_VALIDATE_IDXSCAN 4
78 #define PROGRESS_CREATEIDX_PHASE_VALIDATE_SORT 5
79 #define PROGRESS_CREATEIDX_PHASE_VALIDATE_TABLESCAN 6
80 #define PROGRESS_CREATEIDX_PHASE_WAIT_3 7
81 #define PROGRESS_CREATEIDX_PHASE_WAIT_4 8
82 #define PROGRESS_CREATEIDX_PHASE_WAIT_5 9
83 
84 /*
85  * Subphases of CREATE INDEX, for index_build.
86  */
87 #define PROGRESS_CREATEIDX_SUBPHASE_INITIALIZE 1
88 /* Additional phases are defined by each AM */
89 
90 /* Commands of PROGRESS_CREATEIDX */
91 #define PROGRESS_CREATEIDX_COMMAND_CREATE 1
92 #define PROGRESS_CREATEIDX_COMMAND_CREATE_CONCURRENTLY 2
93 #define PROGRESS_CREATEIDX_COMMAND_REINDEX 3
94 #define PROGRESS_CREATEIDX_COMMAND_REINDEX_CONCURRENTLY 4
95 
96 /* Lock holder wait counts */
97 #define PROGRESS_WAITFOR_TOTAL 3
98 #define PROGRESS_WAITFOR_DONE 4
99 #define PROGRESS_WAITFOR_CURRENT_PID 5
100 
101 /* Block numbers in a generic relation scan */
102 #define PROGRESS_SCAN_BLOCKS_TOTAL 15
103 #define PROGRESS_SCAN_BLOCKS_DONE 16
104 
105 #endif