aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/catalog/index.c24
-rw-r--r--src/backend/commands/indexcmds.c4
-rw-r--r--src/include/nodes/parsenodes.h1
3 files changed, 18 insertions, 11 deletions
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 3e1d40662d1..54288a498c1 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -3306,6 +3306,7 @@ reindex_index(Oid indexId, bool skip_constraint_checks, char persistence,
IndexInfo *indexInfo;
volatile bool skipped_constraint = false;
PGRUsage ru0;
+ bool progress = (options & REINDEXOPT_REPORT_PROGRESS) != 0;
pg_rusage_init(&ru0);
@@ -3316,12 +3317,15 @@ 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_COMMAND,
- PROGRESS_CREATEIDX_COMMAND_REINDEX);
- pgstat_progress_update_param(PROGRESS_CREATEIDX_INDEX_OID,
- indexId);
+ if (progress)
+ {
+ 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);
+ }
/*
* Open the target index relation and get an exclusive lock on it, to
@@ -3329,8 +3333,9 @@ reindex_index(Oid indexId, bool skip_constraint_checks, char persistence,
*/
iRel = index_open(indexId, AccessExclusiveLock);
- pgstat_progress_update_param(PROGRESS_CREATEIDX_ACCESS_METHOD_OID,
- iRel->rd_rel->relam);
+ if (progress)
+ pgstat_progress_update_param(PROGRESS_CREATEIDX_ACCESS_METHOD_OID,
+ iRel->rd_rel->relam);
/*
* The case of reindexing partitioned tables and indexes is handled
@@ -3483,7 +3488,8 @@ reindex_index(Oid indexId, bool skip_constraint_checks, char persistence,
errdetail_internal("%s",
pg_rusage_show(&ru0))));
- pgstat_progress_end_command();
+ if (progress)
+ pgstat_progress_end_command();
/* Close rels, but keep locks */
index_close(iRel, NoLock);
diff --git a/src/backend/commands/indexcmds.c b/src/backend/commands/indexcmds.c
index 147775558c1..d7c1e1c93f8 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -2453,7 +2453,7 @@ ReindexTable(RangeVar *relation, int options, bool concurrent)
result = reindex_relation(heapOid,
REINDEX_REL_PROCESS_TOAST |
REINDEX_REL_CHECK_CONSTRAINTS,
- options);
+ options | REINDEXOPT_REPORT_PROGRESS);
if (!result)
ereport(NOTICE,
(errmsg("table \"%s\" has no indexes to reindex",
@@ -2657,7 +2657,7 @@ ReindexMultipleTables(const char *objectName, ReindexObjectType objectKind,
result = reindex_relation(relid,
REINDEX_REL_PROCESS_TOAST |
REINDEX_REL_CHECK_CONSTRAINTS,
- options);
+ options | REINDEXOPT_REPORT_PROGRESS);
if (result && (options & REINDEXOPT_VERBOSE))
ereport(INFO,
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h
index f21ff8028a1..bb931b2cacf 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -3313,6 +3313,7 @@ typedef struct ConstraintsSetStmt
/* Reindex options */
#define REINDEXOPT_VERBOSE 1 << 0 /* print progress info */
+#define REINDEXOPT_REPORT_PROGRESS 1 << 1 /* report pgstat progress */
typedef enum ReindexObjectType
{