mirror of
https://github.com/postgres/postgres.git
synced 2025-05-20 00:03:14 -04:00
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
This commit is contained in:
parent
041a2642e5
commit
c880096dc1
@ -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
|
<entry>OID of the index being created or reindexed. During a
|
||||||
non-concurrent <command>CREATE INDEX</command>, this is 0.</entry>
|
non-concurrent <command>CREATE INDEX</command>, this is 0.</entry>
|
||||||
</row>
|
</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>
|
<row>
|
||||||
<entry><structfield>phase</structfield></entry>
|
<entry><structfield>phase</structfield></entry>
|
||||||
<entry><type>text</type></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><structfield>command</structfield></entry>
|
||||||
<entry><type>text</type></entry>
|
<entry><type>text</type></entry>
|
||||||
<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>
|
</entry>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
|
@ -3278,6 +3278,8 @@ reindex_index(Oid indexId, bool skip_constraint_checks, char persistence,
|
|||||||
|
|
||||||
pgstat_progress_start_command(PROGRESS_COMMAND_CREATE_INDEX,
|
pgstat_progress_start_command(PROGRESS_COMMAND_CREATE_INDEX,
|
||||||
heapId);
|
heapId);
|
||||||
|
pgstat_progress_update_param(PROGRESS_CREATEIDX_COMMAND,
|
||||||
|
PROGRESS_CREATEIDX_COMMAND_REINDEX);
|
||||||
pgstat_progress_update_param(PROGRESS_CREATEIDX_INDEX_OID,
|
pgstat_progress_update_param(PROGRESS_CREATEIDX_INDEX_OID,
|
||||||
indexId);
|
indexId);
|
||||||
|
|
||||||
|
@ -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.pid AS pid, S.datid AS datid, D.datname AS datname,
|
||||||
S.relid AS relid,
|
S.relid AS relid,
|
||||||
CAST(S.param7 AS oid) AS index_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'
|
CASE S.param10 WHEN 0 THEN 'initializing'
|
||||||
WHEN 1 THEN 'waiting for writers before build'
|
WHEN 1 THEN 'waiting for writers before build'
|
||||||
WHEN 2 THEN 'building index' ||
|
WHEN 2 THEN 'building index' ||
|
||||||
|
@ -498,8 +498,14 @@ DefineIndex(Oid relationId,
|
|||||||
* done.
|
* done.
|
||||||
*/
|
*/
|
||||||
if (!OidIsValid(parentIndexId))
|
if (!OidIsValid(parentIndexId))
|
||||||
|
{
|
||||||
pgstat_progress_start_command(PROGRESS_COMMAND_CREATE_INDEX,
|
pgstat_progress_start_command(PROGRESS_COMMAND_CREATE_INDEX,
|
||||||
relationId);
|
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
|
* No index OID to report yet
|
||||||
@ -2923,6 +2929,8 @@ ReindexRelationConcurrently(Oid relationOid, int options)
|
|||||||
|
|
||||||
pgstat_progress_start_command(PROGRESS_COMMAND_CREATE_INDEX,
|
pgstat_progress_start_command(PROGRESS_COMMAND_CREATE_INDEX,
|
||||||
RelationGetRelid(heapRel));
|
RelationGetRelid(heapRel));
|
||||||
|
pgstat_progress_update_param(PROGRESS_CREATEIDX_COMMAND,
|
||||||
|
PROGRESS_CREATEIDX_COMMAND_REINDEX_CONCURRENTLY);
|
||||||
pgstat_progress_update_param(PROGRESS_CREATEIDX_INDEX_OID,
|
pgstat_progress_update_param(PROGRESS_CREATEIDX_INDEX_OID,
|
||||||
indexId);
|
indexId);
|
||||||
pgstat_progress_update_param(PROGRESS_CREATEIDX_ACCESS_METHOD_OID,
|
pgstat_progress_update_param(PROGRESS_CREATEIDX_ACCESS_METHOD_OID,
|
||||||
|
@ -53,6 +53,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/* yyyymmddN */
|
/* yyyymmddN */
|
||||||
#define CATALOG_VERSION_NO 201906031
|
#define CATALOG_VERSION_NO 201906041
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -59,6 +59,7 @@
|
|||||||
|
|
||||||
/* Progress parameters for CREATE INDEX */
|
/* Progress parameters for CREATE INDEX */
|
||||||
/* 3, 4 and 5 reserved for "waitfor" metrics */
|
/* 3, 4 and 5 reserved for "waitfor" metrics */
|
||||||
|
#define PROGRESS_CREATEIDX_COMMAND 0
|
||||||
#define PROGRESS_CREATEIDX_INDEX_OID 6
|
#define PROGRESS_CREATEIDX_INDEX_OID 6
|
||||||
#define PROGRESS_CREATEIDX_ACCESS_METHOD_OID 8
|
#define PROGRESS_CREATEIDX_ACCESS_METHOD_OID 8
|
||||||
#define PROGRESS_CREATEIDX_PHASE 9 /* AM-agnostic phase # */
|
#define PROGRESS_CREATEIDX_PHASE 9 /* AM-agnostic phase # */
|
||||||
@ -86,6 +87,12 @@
|
|||||||
#define PROGRESS_CREATEIDX_SUBPHASE_INITIALIZE 1
|
#define PROGRESS_CREATEIDX_SUBPHASE_INITIALIZE 1
|
||||||
/* Additional phases are defined by each AM */
|
/* 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 */
|
/* Lock holder wait counts */
|
||||||
#define PROGRESS_WAITFOR_TOTAL 3
|
#define PROGRESS_WAITFOR_TOTAL 3
|
||||||
#define PROGRESS_WAITFOR_DONE 4
|
#define PROGRESS_WAITFOR_DONE 4
|
||||||
|
@ -1879,6 +1879,13 @@ pg_stat_progress_create_index| SELECT s.pid,
|
|||||||
d.datname,
|
d.datname,
|
||||||
s.relid,
|
s.relid,
|
||||||
(s.param7)::oid AS index_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
|
CASE s.param10
|
||||||
WHEN 0 THEN 'initializing'::text
|
WHEN 0 THEN 'initializing'::text
|
||||||
WHEN 1 THEN 'waiting for writers before build'::text
|
WHEN 1 THEN 'waiting for writers before build'::text
|
||||||
|
Loading…
x
Reference in New Issue
Block a user