mirror of
https://github.com/postgres/postgres.git
synced 2025-11-22 12:22:45 +03:00
Report progress of REINDEX operations
This uses the same infrastructure that the CREATE INDEX progress reporting uses. Add a column to pg_stat_progress_create_index to report the OID of the index being worked on. This was not necessary for CREATE INDEX, but it's useful for REINDEX. Also edit the phase descriptions a bit to be more consistent with the source code comments. Discussion: https://www.postgresql.org/message-id/ef6a6757-c36a-9e81-123f-13b19e36b7d7%402ndquadrant.com
This commit is contained in:
@@ -3286,12 +3286,20 @@ reindex_index(Oid indexId, bool skip_constraint_checks, char persistence,
|
||||
heapId = IndexGetRelation(indexId, false);
|
||||
heapRelation = table_open(heapId, ShareLock);
|
||||
|
||||
pgstat_progress_start_command(PROGRESS_COMMAND_CREATE_INDEX,
|
||||
heapId);
|
||||
pgstat_progress_update_param(PROGRESS_CREATEIDX_INDEX_OID,
|
||||
indexId);
|
||||
|
||||
/*
|
||||
* Open the target index relation and get an exclusive lock on it, to
|
||||
* ensure that no one else is touching this particular index.
|
||||
*/
|
||||
iRel = index_open(indexId, AccessExclusiveLock);
|
||||
|
||||
pgstat_progress_update_param(PROGRESS_CREATEIDX_ACCESS_METHOD_OID,
|
||||
iRel->rd_rel->relam);
|
||||
|
||||
/*
|
||||
* The case of reindexing partitioned tables and indexes is handled
|
||||
* differently by upper layers, so this case shouldn't arise.
|
||||
@@ -3442,6 +3450,8 @@ reindex_index(Oid indexId, bool skip_constraint_checks, char persistence,
|
||||
errdetail_internal("%s",
|
||||
pg_rusage_show(&ru0))));
|
||||
|
||||
pgstat_progress_end_command();
|
||||
|
||||
/* Close rels, but keep locks */
|
||||
index_close(iRel, NoLock);
|
||||
table_close(heapRelation, NoLock);
|
||||
|
||||
Reference in New Issue
Block a user