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 795597b7e51..1dac2803b00 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -3328,6 +3328,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);
@@ -3338,12 +3339,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
@@ -3351,8 +3355,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
@@ -3505,7 +3510,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 cbac31476c4..d3824cd45a2 100644
--- a/src/backend/commands/indexcmds.c
+++ b/src/backend/commands/indexcmds.c
@@ -2454,7 +2454,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",
@@ -2658,7 +2658,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 94ded3c135e..c9c72ab94a6 100644
--- a/src/include/nodes/parsenodes.h
+++ b/src/include/nodes/parsenodes.h
@@ -3301,6 +3301,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
{