diff --git a/src/backend/access/spgist/spginsert.c b/src/backend/access/spgist/spginsert.c index cf3d11c34cb..edb41c1fc05 100644 --- a/src/backend/access/spgist/spginsert.c +++ b/src/backend/access/spgist/spginsert.c @@ -30,6 +30,7 @@ typedef struct { SpGistState spgstate; /* SPGiST's working state */ + int64 indtuples; /* total number of tuples indexed */ MemoryContext tmpCtx; /* per-tuple temporary context */ } SpGistBuildState; @@ -57,6 +58,9 @@ spgistBuildCallback(Relation index, HeapTuple htup, Datum *values, MemoryContextReset(buildstate->tmpCtx); } + /* Update total tuple count */ + buildstate->indtuples += 1; + MemoryContextSwitchTo(oldCtx); MemoryContextReset(buildstate->tmpCtx); } @@ -130,6 +134,7 @@ spgbuild(PG_FUNCTION_ARGS) */ initSpGistState(&buildstate.spgstate, index); buildstate.spgstate.isBuild = true; + buildstate.indtuples = 0; buildstate.tmpCtx = AllocSetContextCreate(CurrentMemoryContext, "SP-GiST build temporary context", @@ -145,7 +150,8 @@ spgbuild(PG_FUNCTION_ARGS) SpGistUpdateMetaPage(index); result = (IndexBuildResult *) palloc0(sizeof(IndexBuildResult)); - result->heap_tuples = result->index_tuples = reltuples; + result->heap_tuples = reltuples; + result->index_tuples = buildstate.indtuples; PG_RETURN_POINTER(result); }