/* report that everything is scanned and vacuumed */
pgstat_progress_update_param(PROGRESS_VACUUM_HEAP_BLKS_SCANNED, blkno);
+ /* Clear the block number information */
+ vacrelstats->blkno = InvalidBlockNumber;
+
pfree(frozen);
/* save stats for use later */
npages++;
}
+ /* Clear the block number information */
+ vacrelstats->blkno = InvalidBlockNumber;
+
if (BufferIsValid(vmbuffer))
{
ReleaseBuffer(vmbuffer);
*stats = index_vacuum_cleanup(&ivinfo, *stats);
+ if (*stats)
+ {
+ if (IsParallelWorker())
+ msg = gettext_noop("index \"%s\" now contains %.0f row versions in %u pages as reported by parallel vacuum worker");
+ else
+ msg = gettext_noop("index \"%s\" now contains %.0f row versions in %u pages");
+
+ ereport(elevel,
+ (errmsg(msg,
+ RelationGetRelationName(indrel),
+ (*stats)->num_index_tuples,
+ (*stats)->num_pages),
+ errdetail("%.0f index row versions were removed.\n"
+ "%u index pages have been deleted, %u are currently reusable.\n"
+ "%s.",
+ (*stats)->tuples_removed,
+ (*stats)->pages_deleted, (*stats)->pages_free,
+ pg_rusage_show(&ru0))));
+ }
+
/* Revert back to the old phase information for error traceback */
restore_vacuum_error_info(vacrelstats, &saved_err_info);
pfree(vacrelstats->indname);
vacrelstats->indname = NULL;
-
- if (!(*stats))
- return;
-
- if (IsParallelWorker())
- msg = gettext_noop("index \"%s\" now contains %.0f row versions in %u pages as reported by parallel vacuum worker");
- else
- msg = gettext_noop("index \"%s\" now contains %.0f row versions in %u pages");
-
- ereport(elevel,
- (errmsg(msg,
- RelationGetRelationName(indrel),
- (*stats)->num_index_tuples,
- (*stats)->num_pages),
- errdetail("%.0f index row versions were removed.\n"
- "%u index pages have been deleted, %u are currently reusable.\n"
- "%s.",
- (*stats)->tuples_removed,
- (*stats)->pages_deleted, (*stats)->pages_free,
- pg_rusage_show(&ru0))));
}
/*
if (BlockNumberIsValid(errinfo->blkno))
errcontext("while scanning block %u of relation \"%s.%s\"",
errinfo->blkno, errinfo->relnamespace, errinfo->relname);
+ else
+ errcontext("while scanning relation \"%s.%s\"",
+ errinfo->relnamespace, errinfo->relname);
break;
case VACUUM_ERRCB_PHASE_VACUUM_HEAP:
if (BlockNumberIsValid(errinfo->blkno))
errcontext("while vacuuming block %u of relation \"%s.%s\"",
errinfo->blkno, errinfo->relnamespace, errinfo->relname);
+ else
+ errcontext("while vacuuming relation \"%s.%s\"",
+ errinfo->relnamespace, errinfo->relname);
break;
case VACUUM_ERRCB_PHASE_VACUUM_INDEX: