mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +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:
@ -395,7 +395,7 @@ ginbuild(Relation heap, Relation index, IndexInfo *indexInfo)
|
||||
* Do the heap scan. We disallow sync scan here because dataPlaceToPage
|
||||
* prefers to receive tuples in TID order.
|
||||
*/
|
||||
reltuples = table_index_build_scan(heap, index, indexInfo, false,
|
||||
reltuples = table_index_build_scan(heap, index, indexInfo, false, true,
|
||||
ginBuildCallback, (void *) &buildstate,
|
||||
NULL);
|
||||
|
||||
|
@ -64,6 +64,7 @@ ginhandler(PG_FUNCTION_ARGS)
|
||||
amroutine->amcostestimate = gincostestimate;
|
||||
amroutine->amoptions = ginoptions;
|
||||
amroutine->amproperty = NULL;
|
||||
amroutine->ambuildphasename = NULL;
|
||||
amroutine->amvalidate = ginvalidate;
|
||||
amroutine->ambeginscan = ginbeginscan;
|
||||
amroutine->amrescan = ginrescan;
|
||||
|
Reference in New Issue
Block a user