Skip to content

Commit c880096

Browse files
committed
Add command column to pg_stat_progress_create_index
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
1 parent 041a264 commit c880096

File tree

7 files changed

+40
-2
lines changed

7 files changed

+40
-2
lines changed

doc/src/sgml/monitoring.sgml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3534,6 +3534,15 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid,
35343534
<entry>OID of the index being created or reindexed. During a
35353535
non-concurrent <command>CREATE INDEX</command>, this is 0.</entry>
35363536
</row>
3537+
<row>
3538+
<entry><structfield>command</structfield></entry>
3539+
<entry><type>text</type></entry>
3540+
<entry>
3541+
The command that is running: <literal>CREATE INDEX</literal>,
3542+
<literal>CREATE INDEX CONCURRENTLY</literal>,
3543+
<literal>REINDEX</literal>, or <literal>REINDEX CONCURRENTLY</literal>.
3544+
</entry>
3545+
</row>
35373546
<row>
35383547
<entry><structfield>phase</structfield></entry>
35393548
<entry><type>text</type></entry>
@@ -3965,7 +3974,7 @@ SELECT pg_stat_get_backend_pid(s.backendid) AS pid,
39653974
<entry><structfield>command</structfield></entry>
39663975
<entry><type>text</type></entry>
39673976
<entry>
3968-
The command that is running. Either CLUSTER or VACUUM FULL.
3977+
The command that is running. Either <literal>CLUSTER</literal> or <literal>VACUUM FULL</literal>.
39693978
</entry>
39703979
</row>
39713980
<row>

src/backend/catalog/index.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3278,6 +3278,8 @@ reindex_index(Oid indexId, bool skip_constraint_checks, char persistence,
32783278

32793279
pgstat_progress_start_command(PROGRESS_COMMAND_CREATE_INDEX,
32803280
heapId);
3281+
pgstat_progress_update_param(PROGRESS_CREATEIDX_COMMAND,
3282+
PROGRESS_CREATEIDX_COMMAND_REINDEX);
32813283
pgstat_progress_update_param(PROGRESS_CREATEIDX_INDEX_OID,
32823284
indexId);
32833285

src/backend/catalog/system_views.sql

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -956,6 +956,11 @@ CREATE VIEW pg_stat_progress_create_index AS
956956
S.pid AS pid, S.datid AS datid, D.datname AS datname,
957957
S.relid AS relid,
958958
CAST(S.param7 AS oid) AS index_relid,
959+
CASE S.param1 WHEN 1 THEN 'CREATE INDEX'
960+
WHEN 2 THEN 'CREATE INDEX CONCURRENTLY'
961+
WHEN 3 THEN 'REINDEX'
962+
WHEN 4 THEN 'REINDEX CONCURRENTLY'
963+
END AS command,
959964
CASE S.param10 WHEN 0 THEN 'initializing'
960965
WHEN 1 THEN 'waiting for writers before build'
961966
WHEN 2 THEN 'building index' ||

src/backend/commands/indexcmds.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,8 +498,14 @@ DefineIndex(Oid relationId,
498498
* done.
499499
*/
500500
if (!OidIsValid(parentIndexId))
501+
{
501502
pgstat_progress_start_command(PROGRESS_COMMAND_CREATE_INDEX,
502503
relationId);
504+
pgstat_progress_update_param(PROGRESS_CREATEIDX_COMMAND,
505+
stmt->concurrent ?
506+
PROGRESS_CREATEIDX_COMMAND_CREATE_CONCURRENTLY :
507+
PROGRESS_CREATEIDX_COMMAND_CREATE);
508+
}
503509

504510
/*
505511
* No index OID to report yet
@@ -2923,6 +2929,8 @@ ReindexRelationConcurrently(Oid relationOid, int options)
29232929

29242930
pgstat_progress_start_command(PROGRESS_COMMAND_CREATE_INDEX,
29252931
RelationGetRelid(heapRel));
2932+
pgstat_progress_update_param(PROGRESS_CREATEIDX_COMMAND,
2933+
PROGRESS_CREATEIDX_COMMAND_REINDEX_CONCURRENTLY);
29262934
pgstat_progress_update_param(PROGRESS_CREATEIDX_INDEX_OID,
29272935
indexId);
29282936
pgstat_progress_update_param(PROGRESS_CREATEIDX_ACCESS_METHOD_OID,

src/include/catalog/catversion.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,6 @@
5353
*/
5454

5555
/* yyyymmddN */
56-
#define CATALOG_VERSION_NO 201906031
56+
#define CATALOG_VERSION_NO 201906041
5757

5858
#endif

src/include/commands/progress.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959

6060
/* Progress parameters for CREATE INDEX */
6161
/* 3, 4 and 5 reserved for "waitfor" metrics */
62+
#define PROGRESS_CREATEIDX_COMMAND 0
6263
#define PROGRESS_CREATEIDX_INDEX_OID 6
6364
#define PROGRESS_CREATEIDX_ACCESS_METHOD_OID 8
6465
#define PROGRESS_CREATEIDX_PHASE 9 /* AM-agnostic phase # */
@@ -86,6 +87,12 @@
8687
#define PROGRESS_CREATEIDX_SUBPHASE_INITIALIZE 1
8788
/* Additional phases are defined by each AM */
8889

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+
8996
/* Lock holder wait counts */
9097
#define PROGRESS_WAITFOR_TOTAL 3
9198
#define PROGRESS_WAITFOR_DONE 4

src/test/regress/expected/rules.out

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1879,6 +1879,13 @@ pg_stat_progress_create_index| SELECT s.pid,
18791879
d.datname,
18801880
s.relid,
18811881
(s.param7)::oid AS index_relid,
1882+
CASE s.param1
1883+
WHEN 1 THEN 'CREATE INDEX'::text
1884+
WHEN 2 THEN 'CREATE INDEX CONCURRENTLY'::text
1885+
WHEN 3 THEN 'REINDEX'::text
1886+
WHEN 4 THEN 'REINDEX CONCURRENTLY'::text
1887+
ELSE NULL::text
1888+
END AS command,
18821889
CASE s.param10
18831890
WHEN 0 THEN 'initializing'::text
18841891
WHEN 1 THEN 'waiting for writers before build'::text

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy