mirror of
https://github.com/postgres/postgres.git
synced 2025-08-30 06:01:21 +03:00
Report progress of CREATE INDEX operations
This uses the progress reporting infrastructure added by c16dc1aca5
,
adding support for CREATE INDEX and CREATE INDEX CONCURRENTLY.
There are two pieces to this: one is index-AM-agnostic, and the other is
AM-specific. The latter is fairly elaborate for btrees, including
reportage for parallel index builds and the separate phases that btree
index creation uses; other index AMs, which are much simpler in their
building procedures, have simplistic reporting only, but that seems
sufficient, at least for non-concurrent builds.
The index-AM-agnostic part is fairly complete, providing insight into
the CONCURRENTLY wait phases as well as block-based progress during the
index validation table scan. (The index validation index scan requires
patching each AM, which has not been included here.)
Reviewers: Rahila Syed, Pavan Deolasee, Tatsuro Yamada
Discussion: https://postgr.es/m/20181220220022.mg63bhk26zdpvmcj@alvherre.pgsql
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
#include "access/nbtree.h"
|
||||
#include "access/reloptions.h"
|
||||
#include "access/relscan.h"
|
||||
#include "commands/progress.h"
|
||||
#include "miscadmin.h"
|
||||
#include "utils/array.h"
|
||||
#include "utils/datum.h"
|
||||
@@ -2051,6 +2052,29 @@ btproperty(Oid index_oid, int attno,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* btbuildphasename() -- Return name of index build phase.
|
||||
*/
|
||||
char *
|
||||
btbuildphasename(int64 phasenum)
|
||||
{
|
||||
switch (phasenum)
|
||||
{
|
||||
case PROGRESS_CREATEIDX_SUBPHASE_INITIALIZE:
|
||||
return "initializing";
|
||||
case PROGRESS_BTREE_PHASE_INDEXBUILD_TABLESCAN:
|
||||
return "scanning table";
|
||||
case PROGRESS_BTREE_PHASE_PERFORMSORT_1:
|
||||
return "sorting live tuples";
|
||||
case PROGRESS_BTREE_PHASE_PERFORMSORT_2:
|
||||
return "sorting dead tuples";
|
||||
case PROGRESS_BTREE_PHASE_LEAF_LOAD:
|
||||
return "loading tuples in tree";
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* _bt_truncate() -- create tuple without unneeded suffix attributes.
|
||||
*
|
||||
|
Reference in New Issue
Block a user