From 2e11bd7284727fd4ec05cc2a5c57c6b379752e15 Mon Sep 17 00:00:00 2001 From: Justin Pryzby Date: Wed, 1 Jan 2020 17:35:35 -0600 Subject: [PATCH v1 3/6] Indent VACUUM VERBOSE multi-line errdetail messages.. I borrowed the format from ShowUsage. --- src/backend/access/heap/vacuumlazy.c | 38 +++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/src/backend/access/heap/vacuumlazy.c b/src/backend/access/heap/vacuumlazy.c index 532698d..c8d5538 100644 --- a/src/backend/access/heap/vacuumlazy.c +++ b/src/backend/access/heap/vacuumlazy.c @@ -591,7 +591,8 @@ lazy_scan_heap(Relation onerel, VacuumParams *params, LVRelStats *vacrelstats, BlockNumber nblocks, blkno; HeapTupleData tuple; - char *relname; + char *relname, + *msgprefix; TransactionId relfrozenxid = onerel->rd_rel->relfrozenxid; TransactionId relminmxid = onerel->rd_rel->relminmxid; BlockNumber empty_pages, @@ -1440,28 +1441,37 @@ lazy_scan_heap(Relation onerel, VacuumParams *params, LVRelStats *vacrelstats, tups_vacuumed, vacuumed_pages))); /* + * Indent multi-line DETAIL if being sent to client (verbose) + * We don't know if it's sent to the client (client_min_messages); + * Also, that affects output to the logfile, too; assume that it's more + * important to format messages requested by the client than to make + * verbose logs pretty when also sent to the logfile. + */ + msgprefix = elevel==INFO ? "!\t" : ""; + + /* * This is pretty messy, but we split it up so that we can skip emitting * individual parts of the message when not applicable. */ initStringInfo(&sbuf); appendStringInfo(&sbuf, - _("%.0f dead row versions cannot be removed yet, oldest xmin: %u\n"), + _("! %.0f dead row versions cannot be removed yet, oldest xmin: %u\n"), nkeep, OldestXmin); - appendStringInfo(&sbuf, _("There were %.0f unused item identifiers.\n"), - nunused); - appendStringInfo(&sbuf, ngettext("Skipped %u page due to buffer pins, ", - "Skipped %u pages due to buffer pins, ", + appendStringInfo(&sbuf, _("%sThere were %.0f unused item identifiers.\n"), + msgprefix, nunused); + appendStringInfo(&sbuf, ngettext("%sSkipped %u page due to buffer pins, ", + "%sSkipped %u pages due to buffer pins, ", vacrelstats->pinskipped_pages), - vacrelstats->pinskipped_pages); + msgprefix, vacrelstats->pinskipped_pages); appendStringInfo(&sbuf, ngettext("%u frozen page.\n", "%u frozen pages.\n", vacrelstats->frozenskipped_pages), vacrelstats->frozenskipped_pages); - appendStringInfo(&sbuf, ngettext("%u page is entirely empty.\n", - "%u pages are entirely empty.\n", + appendStringInfo(&sbuf, ngettext("%s%u page is entirely empty.\n", + "%s%u pages are entirely empty.\n", empty_pages), - empty_pages); - appendStringInfo(&sbuf, _("%s."), pg_rusage_show(&ru0)); + msgprefix, empty_pages); + appendStringInfo(&sbuf, _("%s%s."), msgprefix, pg_rusage_show(&ru0)); // why translate this ?? ereport(elevel, (errmsg("\"%s\": found %.0f removable, %.0f nonremovable row versions in %u out of %u pages", @@ -1828,9 +1838,9 @@ lazy_cleanup_index(Relation indrel, 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.", + errdetail("! %.0f index row versions were removed.\n" + "!\t%u index pages have been deleted, %u are currently reusable.\n" + "!\t%s.", stats->tuples_removed, stats->pages_deleted, stats->pages_free, pg_rusage_show(&ru0)))); -- 2.7.4