]> granicus.if.org Git - postgresql/commitdiff
Add command column to pg_stat_progress_create_index
authorPeter Eisentraut <peter@eisentraut.org>
Tue, 4 Jun 2019 07:16:02 +0000 (09:16 +0200)
committerPeter Eisentraut <peter@eisentraut.org>
Tue, 4 Jun 2019 07:29:02 +0000 (09:29 +0200)
This allows determining which command is running, similar to
pg_stat_progress_cluster.

Discussion: https://www.postgresql.org/message-id/flat/f0e56b3b-74b7-6cbc-e207-a5ed6bee18dc%402ndquadrant.com

doc/src/sgml/monitoring.sgml
src/backend/catalog/index.c
src/backend/catalog/system_views.sql
src/backend/commands/indexcmds.c
src/include/catalog/catversion.h
src/include/commands/progress.h
src/test/regress/expected/rules.out

index 570ac5e06f723061b6241944efb5c189be3b96d1..bf72d0c3031a2af12650918027e6032d3cc2bd97 100644 (file)
@@ -3534,6 +3534,15 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid,
       <entry>OID of the index being created or reindexed.  During a
       non-concurrent <command>CREATE INDEX</command>, this is 0.</entry>
      </row>
+     <row>
+      <entry><structfield>command</structfield></entry>
+      <entry><type>text</type></entry>
+      <entry>
+       The command that is running: <literal>CREATE INDEX</literal>,
+       <literal>CREATE INDEX CONCURRENTLY</literal>,
+       <literal>REINDEX</literal>, or <literal>REINDEX CONCURRENTLY</literal>.
+      </entry>
+     </row>
      <row>
       <entry><structfield>phase</structfield></entry>
       <entry><type>text</type></entry>
@@ -3965,7 +3974,7 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid,
      <entry><structfield>command</structfield></entry>
      <entry><type>text</type></entry>
      <entry>
-       The command that is running. Either CLUSTER or VACUUM FULL.
+      The command that is running. Either <literal>CLUSTER</literal> or <literal>VACUUM FULL</literal>.
      </entry>
     </row>
     <row>
index 50c8bb9ce658b86f06e31a8d3352192a5481ce84..d2e4f53a80131286f4a20df99c47da29da2c6dac 100644 (file)
@@ -3278,6 +3278,8 @@ reindex_index(Oid indexId, bool skip_constraint_checks, char persistence,
 
        pgstat_progress_start_command(PROGRESS_COMMAND_CREATE_INDEX,
                                                                  heapId);
+       pgstat_progress_update_param(PROGRESS_CREATEIDX_COMMAND,
+                                                                PROGRESS_CREATEIDX_COMMAND_REINDEX);
        pgstat_progress_update_param(PROGRESS_CREATEIDX_INDEX_OID,
                                                                 indexId);
 
index 52a6c315840b7d074033b37b8c05f11727ad11e9..78a103cdb95a426af9db4bf3aa271ae86cc5c477 100644 (file)
@@ -956,6 +956,11 @@ CREATE VIEW pg_stat_progress_create_index AS
         S.pid AS pid, S.datid AS datid, D.datname AS datname,
         S.relid AS relid,
         CAST(S.param7 AS oid) AS index_relid,
+        CASE S.param1 WHEN 1 THEN 'CREATE INDEX'
+                      WHEN 2 THEN 'CREATE INDEX CONCURRENTLY'
+                      WHEN 3 THEN 'REINDEX'
+                      WHEN 4 THEN 'REINDEX CONCURRENTLY'
+                      END AS command,
         CASE S.param10 WHEN 0 THEN 'initializing'
                        WHEN 1 THEN 'waiting for writers before build'
                        WHEN 2 THEN 'building index' ||
index 40ea629ffe7f43a3be46f310aada285702dddf1f..4d76da82937df6cfe2d4edde9f1640244cba9d05 100644 (file)
@@ -498,8 +498,14 @@ DefineIndex(Oid relationId,
         * done.
         */
        if (!OidIsValid(parentIndexId))
+       {
                pgstat_progress_start_command(PROGRESS_COMMAND_CREATE_INDEX,
                                                                          relationId);
+               pgstat_progress_update_param(PROGRESS_CREATEIDX_COMMAND,
+                                                                        stmt->concurrent ?
+                                                                        PROGRESS_CREATEIDX_COMMAND_CREATE_CONCURRENTLY :
+                                                                        PROGRESS_CREATEIDX_COMMAND_CREATE);
+       }
 
        /*
         * No index OID to report yet
@@ -2923,6 +2929,8 @@ ReindexRelationConcurrently(Oid relationOid, int options)
 
                pgstat_progress_start_command(PROGRESS_COMMAND_CREATE_INDEX,
                                                                          RelationGetRelid(heapRel));
+               pgstat_progress_update_param(PROGRESS_CREATEIDX_COMMAND,
+                                                                        PROGRESS_CREATEIDX_COMMAND_REINDEX_CONCURRENTLY);
                pgstat_progress_update_param(PROGRESS_CREATEIDX_INDEX_OID,
                                                                         indexId);
                pgstat_progress_update_param(PROGRESS_CREATEIDX_ACCESS_METHOD_OID,
index 468aec38905f08d467982b2e0c5a01bbab702635..4b8ee1cbdb480be215c1c176d493a614800c5bca 100644 (file)
@@ -53,6 +53,6 @@
  */
 
 /*                                                     yyyymmddN */
-#define CATALOG_VERSION_NO     201906031
+#define CATALOG_VERSION_NO     201906041
 
 #endif
index 37043e926d14c76250d1a931dbf9ed9c1d4dd696..acd1313cb3dbd27622a9c53945ef5e599945bb3a 100644 (file)
@@ -59,6 +59,7 @@
 
 /* Progress parameters for CREATE INDEX */
 /* 3, 4 and 5 reserved for "waitfor" metrics */
+#define PROGRESS_CREATEIDX_COMMAND                             0
 #define PROGRESS_CREATEIDX_INDEX_OID                   6
 #define PROGRESS_CREATEIDX_ACCESS_METHOD_OID   8
 #define PROGRESS_CREATEIDX_PHASE                               9       /* AM-agnostic phase # */
 #define PROGRESS_CREATEIDX_SUBPHASE_INITIALIZE 1
 /* Additional phases are defined by each AM */
 
+/* Commands of PROGRESS_CREATEIDX */
+#define PROGRESS_CREATEIDX_COMMAND_CREATE                      1
+#define PROGRESS_CREATEIDX_COMMAND_CREATE_CONCURRENTLY 2
+#define PROGRESS_CREATEIDX_COMMAND_REINDEX             3
+#define PROGRESS_CREATEIDX_COMMAND_REINDEX_CONCURRENTLY        4
+
 /* Lock holder wait counts */
 #define PROGRESS_WAITFOR_TOTAL                                 3
 #define PROGRESS_WAITFOR_DONE                                  4
index 4363ca16633be1c68e78d32275c0adeb72182bbf..7d365c48d1298de1cc8699d6cbf6b2313100ec90 100644 (file)
@@ -1879,6 +1879,13 @@ pg_stat_progress_create_index| SELECT s.pid,
     d.datname,
     s.relid,
     (s.param7)::oid AS index_relid,
+        CASE s.param1
+            WHEN 1 THEN 'CREATE INDEX'::text
+            WHEN 2 THEN 'CREATE INDEX CONCURRENTLY'::text
+            WHEN 3 THEN 'REINDEX'::text
+            WHEN 4 THEN 'REINDEX CONCURRENTLY'::text
+            ELSE NULL::text
+        END AS command,
         CASE s.param10
             WHEN 0 THEN 'initializing'::text
             WHEN 1 THEN 'waiting for writers before build'::text