From 069d33d0c5a021601245e44df77a0423ddd69359 Mon Sep 17 00:00:00 2001 From: Daniel Gustafsson Date: Mon, 16 Aug 2021 20:06:54 +0200 Subject: [PATCH] Emit namespace in the post-copy errmsg During a VACUUM or CLUSTER command, the initial output emits a fully qualified relation path with namespace. The post-action errmsg only emitted the relation name however, which may lead to hard to parse output when using multiple jobs with vacuumdb as the output from different jobs may be interleaved. Include the full path in the post-action errmsg to be consistent with the initial errmsg. Author: Mike Fiedler Reviewed-by: Corey Huinker Discussion: https://postgr.es/m/CAMerE0oz+8G-aORZL_BJcPxnBqewZAvND4bSUysjz+r-oT1BxQ@mail.gmail.com --- src/backend/access/heap/vacuumlazy.c | 3 ++- src/backend/commands/cluster.c | 13 +++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/backend/access/heap/vacuumlazy.c b/src/backend/access/heap/vacuumlazy.c index 91dcf7555fd..334d8a2aa71 100644 --- a/src/backend/access/heap/vacuumlazy.c +++ b/src/backend/access/heap/vacuumlazy.c @@ -1675,7 +1675,8 @@ lazy_scan_heap(LVRelState *vacrel, VacuumParams *params, bool aggressive) appendStringInfo(&buf, _("%s."), pg_rusage_show(&ru0)); ereport(elevel, - (errmsg("table \"%s\": found %lld removable, %lld nonremovable row versions in %u out of %u pages", + (errmsg("table \"%s.%s\": found %lld removable, %lld nonremovable row versions in %u out of %u pages", + vacrel->relnamespace, vacrel->relname, (long long) vacrel->tuples_deleted, (long long) vacrel->num_tuples, vacrel->scanned_pages, diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c index b3d8b6deb03..39185cc5b9f 100644 --- a/src/backend/commands/cluster.c +++ b/src/backend/commands/cluster.c @@ -776,6 +776,7 @@ copy_table_data(Oid OIDNewHeap, Oid OIDOldHeap, Oid OIDOldIndex, bool verbose, BlockNumber num_pages; int elevel = verbose ? INFO : DEBUG2; PGRUsage ru0; + char *nspname; pg_rusage_init(&ru0); @@ -789,6 +790,9 @@ copy_table_data(Oid OIDNewHeap, Oid OIDOldHeap, Oid OIDOldIndex, bool verbose, else OldIndex = NULL; + /* Store a copy of the namespace name for logging purposes */ + nspname = get_namespace_name(RelationGetNamespace(OldHeap)); + /* * Their tuple descriptors should be exactly alike, but here we only need * assume that they have the same number of columns. @@ -887,18 +891,18 @@ copy_table_data(Oid OIDNewHeap, Oid OIDOldHeap, Oid OIDOldIndex, bool verbose, if (OldIndex != NULL && !use_sort) ereport(elevel, (errmsg("clustering \"%s.%s\" using index scan on \"%s\"", - get_namespace_name(RelationGetNamespace(OldHeap)), + nspname, RelationGetRelationName(OldHeap), RelationGetRelationName(OldIndex)))); else if (use_sort) ereport(elevel, (errmsg("clustering \"%s.%s\" using sequential scan and sort", - get_namespace_name(RelationGetNamespace(OldHeap)), + nspname, RelationGetRelationName(OldHeap)))); else ereport(elevel, (errmsg("vacuuming \"%s.%s\"", - get_namespace_name(RelationGetNamespace(OldHeap)), + nspname, RelationGetRelationName(OldHeap)))); /* @@ -923,7 +927,8 @@ copy_table_data(Oid OIDNewHeap, Oid OIDOldHeap, Oid OIDOldIndex, bool verbose, /* Log what we did */ ereport(elevel, - (errmsg("\"%s\": found %.0f removable, %.0f nonremovable row versions in %u pages", + (errmsg("\"%s.%s\": found %.0f removable, %.0f nonremovable row versions in %u pages", + nspname, RelationGetRelationName(OldHeap), tups_vacuumed, num_tuples, RelationGetNumberOfBlocks(OldHeap)),