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 |
106 | |