From b09426fe4d1e049410ccba92157a9cca917b05ce Mon Sep 17 00:00:00 2001 From: Daniel Gustafsson Date: Wed, 28 Jul 2021 15:44:14 +0200 Subject: [PATCH v2] Emit namespace in the post-copy errmsg During a VACUUM or CLUSTER command, the initial output emits the fully qualified relation path with namespace. The post-action errmsg only emitted the relation name however, which could lead to hard to parse output when using multiple jobs with vacuumdb for example. Output the post-action errmsg to include the full path 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 2c04b69221..e8a27362f6 100644 --- a/src/backend/access/heap/vacuumlazy.c +++ b/src/backend/access/heap/vacuumlazy.c @@ -1673,7 +1673,8 @@ lazy_scan_heap(LVRelState *vacrel, VacuumParams *params, bool aggressive) appendStringInfo(&buf, _("%s."), pg_rusage_show(&ru0)); ereport(elevel, - (errmsg("\"%s\": found %lld removable, %lld nonremovable row versions in %u out of %u pages", + (errmsg("\"%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 b3d8b6deb0..39185cc5b9 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)), -- 2.30.1 (Apple Git-130)