Re: error context for vacuum to include block number

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Justin Pryzby <pryzby@telsasoft.com>
Cc: pgsql-hackers@postgresql.org, Andres Freund <andres@anarazel.de>
Date: 2019-12-11T12:15:07Z
Lists: pgsql-hackers
On Fri, Dec 06, 2019 at 10:23:25AM -0600, Justin Pryzby wrote:
> Find attached updated patch:
>  . Use structure to include relation name.
>  . Split into a separate patch rename of "StringInfoData buf".
> 
> 2019-11-27 20:04:53.640 CST [14244] ERROR:  canceling statement due to statement timeout
> 2019-11-27 20:04:53.640 CST [14244] CONTEXT:  block 2314 of relation t
> 2019-11-27 20:04:53.640 CST [14244] STATEMENT:  vacuum t;
> 
> I tried to use BufferGetTag() to avoid using a 2ndary structure, but fails if
> the buffer is not pinned.

No problem from me to add more context directly in lazy_scan_heap().

+       // errcallback.arg = (void *) &buf;
The first patch is full of that, please make sure to clean it up.  

Let's keep also the message simple, still I think that it should be a
bit more explicative:
1) Let's the schema name, and quote the relation name.
2) Let's mention the scanning (or vacuuming) operation.

So I would suggest the following instead:
"while scanning block %u of relation \"%s.%s\"" 
--
Michael

Commits

  1. Avoid calls to RelationGetRelationName() and RelationGetNamespace() in

  2. Introduce vacuum errcontext to display additional information.

  3. Fix mesurement of elapsed time during truncating heap in VACUUM.

  4. Allow vacuum command to process indexes in parallel.

  5. Refactor code dedicated to index vacuuming in vacuumlazy.c

  6. Remove duplicated progress reporting during heap scan of VACUUM