2
0

progress.h 5.9 KB

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