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-2020, 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 analyze */ 38 #define PROGRESS_ANALYZE_PHASE 0 39 #define PROGRESS_ANALYZE_BLOCKS_TOTAL 1 40 #define PROGRESS_ANALYZE_BLOCKS_DONE 2 41 #define PROGRESS_ANALYZE_EXT_STATS_TOTAL 3 42 #define PROGRESS_ANALYZE_EXT_STATS_COMPUTED 4 43 #define PROGRESS_ANALYZE_CHILD_TABLES_TOTAL 5 44 #define PROGRESS_ANALYZE_CHILD_TABLES_DONE 6 45 #define PROGRESS_ANALYZE_CURRENT_CHILD_TABLE_RELID 7 46 47 /* Phases of analyze (as advertised via PROGRESS_ANALYZE_PHASE) */ 48 #define PROGRESS_ANALYZE_PHASE_ACQUIRE_SAMPLE_ROWS 1 49 #define PROGRESS_ANALYZE_PHASE_ACQUIRE_SAMPLE_ROWS_INH 2 50 #define PROGRESS_ANALYZE_PHASE_COMPUTE_STATS 3 51 #define PROGRESS_ANALYZE_PHASE_COMPUTE_EXT_STATS 4 52 #define PROGRESS_ANALYZE_PHASE_FINALIZE_ANALYZE 5 53 54 /* Progress parameters for cluster */ 55 #define PROGRESS_CLUSTER_COMMAND 0 56 #define PROGRESS_CLUSTER_PHASE 1 57 #define PROGRESS_CLUSTER_INDEX_RELID 2 58 #define PROGRESS_CLUSTER_HEAP_TUPLES_SCANNED 3 59 #define PROGRESS_CLUSTER_HEAP_TUPLES_WRITTEN 4 60 #define PROGRESS_CLUSTER_TOTAL_HEAP_BLKS 5 61 #define PROGRESS_CLUSTER_HEAP_BLKS_SCANNED 6 62 #define PROGRESS_CLUSTER_INDEX_REBUILD_COUNT 7 63 64 /* Phases of cluster (as advertised via PROGRESS_CLUSTER_PHASE) */ 65 #define PROGRESS_CLUSTER_PHASE_SEQ_SCAN_HEAP 1 66 #define PROGRESS_CLUSTER_PHASE_INDEX_SCAN_HEAP 2 67 #define PROGRESS_CLUSTER_PHASE_SORT_TUPLES 3 68 #define PROGRESS_CLUSTER_PHASE_WRITE_NEW_HEAP 4 69 #define PROGRESS_CLUSTER_PHASE_SWAP_REL_FILES 5 70 #define PROGRESS_CLUSTER_PHASE_REBUILD_INDEX 6 71 #define PROGRESS_CLUSTER_PHASE_FINAL_CLEANUP 7 72 73 /* Commands of PROGRESS_CLUSTER */ 74 #define PROGRESS_CLUSTER_COMMAND_CLUSTER 1 75 #define PROGRESS_CLUSTER_COMMAND_VACUUM_FULL 2 76 77 /* Progress parameters for CREATE INDEX */ 78 /* 3, 4 and 5 reserved for "waitfor" metrics */ 79 #define PROGRESS_CREATEIDX_COMMAND 0 80 #define PROGRESS_CREATEIDX_INDEX_OID 6 81 #define PROGRESS_CREATEIDX_ACCESS_METHOD_OID 8 82 #define PROGRESS_CREATEIDX_PHASE 9 /* AM-agnostic phase # */ 83 #define PROGRESS_CREATEIDX_SUBPHASE 10 /* phase # filled by AM */ 84 #define PROGRESS_CREATEIDX_TUPLES_TOTAL 11 85 #define PROGRESS_CREATEIDX_TUPLES_DONE 12 86 #define PROGRESS_CREATEIDX_PARTITIONS_TOTAL 13 87 #define PROGRESS_CREATEIDX_PARTITIONS_DONE 14 88 /* 15 and 16 reserved for "block number" metrics */ 89 90 /* Phases of CREATE INDEX (as advertised via PROGRESS_CREATEIDX_PHASE) */ 91 #define PROGRESS_CREATEIDX_PHASE_WAIT_1 1 92 #define PROGRESS_CREATEIDX_PHASE_BUILD 2 93 #define PROGRESS_CREATEIDX_PHASE_WAIT_2 3 94 #define PROGRESS_CREATEIDX_PHASE_VALIDATE_IDXSCAN 4 95 #define PROGRESS_CREATEIDX_PHASE_VALIDATE_SORT 5 96 #define PROGRESS_CREATEIDX_PHASE_VALIDATE_TABLESCAN 6 97 #define PROGRESS_CREATEIDX_PHASE_WAIT_3 7 98 #define PROGRESS_CREATEIDX_PHASE_WAIT_4 8 99 #define PROGRESS_CREATEIDX_PHASE_WAIT_5 9 100 101 /* 102 * Subphases of CREATE INDEX, for index_build. 103 */ 104 #define PROGRESS_CREATEIDX_SUBPHASE_INITIALIZE 1 105 /* Additional phases are defined by each AM */ 106 107 /* Commands of PROGRESS_CREATEIDX */ 108 #define PROGRESS_CREATEIDX_COMMAND_CREATE 1 109 #define PROGRESS_CREATEIDX_COMMAND_CREATE_CONCURRENTLY 2 110 #define PROGRESS_CREATEIDX_COMMAND_REINDEX 3 111 #define PROGRESS_CREATEIDX_COMMAND_REINDEX_CONCURRENTLY 4 112 113 /* Lock holder wait counts */ 114 #define PROGRESS_WAITFOR_TOTAL 3 115 #define PROGRESS_WAITFOR_DONE 4 116 #define PROGRESS_WAITFOR_CURRENT_PID 5 117 118 /* Block numbers in a generic relation scan */ 119 #define PROGRESS_SCAN_BLOCKS_TOTAL 15 120 #define PROGRESS_SCAN_BLOCKS_DONE 16 121 122 /* Progress parameters for pg_basebackup */ 123 #define PROGRESS_BASEBACKUP_PHASE 0 124 #define PROGRESS_BASEBACKUP_BACKUP_TOTAL 1 125 #define PROGRESS_BASEBACKUP_BACKUP_STREAMED 2 126 #define PROGRESS_BASEBACKUP_TBLSPC_TOTAL 3 127 #define PROGRESS_BASEBACKUP_TBLSPC_STREAMED 4 128 129 /* Phases of pg_basebackup (as advertised via PROGRESS_BASEBACKUP_PHASE) */ 130 #define PROGRESS_BASEBACKUP_PHASE_WAIT_CHECKPOINT 1 131 #define PROGRESS_BASEBACKUP_PHASE_ESTIMATE_BACKUP_SIZE 2 132 #define PROGRESS_BASEBACKUP_PHASE_STREAM_BACKUP 3 133 #define PROGRESS_BASEBACKUP_PHASE_WAIT_WAL_ARCHIVE 4 134 #define PROGRESS_BASEBACKUP_PHASE_TRANSFER_WAL 5 135 136 #endif 137