From ab0dfc961b6a821f23d9c40c723d11380ce195a6 Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Tue, 2 Apr 2019 15:18:08 -0300 Subject: Report progress of CREATE INDEX operations This uses the progress reporting infrastructure added by c16dc1aca5e0, 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 --- contrib/bloom/blinsert.c | 2 +- contrib/bloom/blutils.c | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'contrib/bloom') diff --git a/contrib/bloom/blinsert.c b/contrib/bloom/blinsert.c index 1b8df7e1e84..4b2186b8dda 100644 --- a/contrib/bloom/blinsert.c +++ b/contrib/bloom/blinsert.c @@ -142,7 +142,7 @@ blbuild(Relation heap, Relation index, IndexInfo *indexInfo) initCachedPage(&buildstate); /* Do the heap scan */ - reltuples = table_index_build_scan(heap, index, indexInfo, true, + reltuples = table_index_build_scan(heap, index, indexInfo, true, true, bloomBuildCallback, (void *) &buildstate, NULL); diff --git a/contrib/bloom/blutils.c b/contrib/bloom/blutils.c index d078dfbd469..ee3bd562748 100644 --- a/contrib/bloom/blutils.c +++ b/contrib/bloom/blutils.c @@ -132,6 +132,7 @@ blhandler(PG_FUNCTION_ARGS) amroutine->amcostestimate = blcostestimate; amroutine->amoptions = bloptions; amroutine->amproperty = NULL; + amroutine->ambuildphasename = NULL; amroutine->amvalidate = blvalidate; amroutine->ambeginscan = blbeginscan; amroutine->amrescan = blrescan; -- cgit v1.2.3