Re: error context for vacuum to include block number

Justin Pryzby <pryzby@telsasoft.com>

From: Justin Pryzby <pryzby@telsasoft.com>
To: Amit Kapila <amit.kapila16@gmail.com>
Cc: Alvaro Herrera <alvherre@2ndquadrant.com>, Masahiko Sawada <masahiko.sawada@2ndquadrant.com>, Andres Freund <andres@anarazel.de>, Michael Paquier <michael@paquier.xyz>, pgsql-hackers@postgresql.org
Date: 2020-03-30T16:26:16Z
Lists: pgsql-hackers

Attachments

On Mon, Mar 30, 2020 at 02:31:53PM +0530, Amit Kapila wrote:
> Now that the main patch is committed, I have reviewed the other two patches.

Thanks for that

On Mon, Mar 30, 2020 at 02:31:53PM +0530, Amit Kapila wrote:
> The v37-0003-Avoid-some-calls-to-RelationGetRelationName.patch looks
> good to me.  I have added the commit message in the patch.

I realized the 0003 patch has an error in lazy_vacuum_index; it should be:

-                                       RelationGetRelationName(indrel),
+                                       vacrelstats->indname,

That was maybe due to originally using a separate errinfo for each phase, with
one "char *relname" and no "char *indrel".

> I don't think the above change is correct.  How will vacrelstats have
> correct values when vacuum_one_index is called via parallel workers
> (via parallel_vacuum_main)?

You're right: parallel main's vacrelstats was added by this patchset and only
the error context fields were initialized.  I fixed it up in the attached by
also setting vacrelstats->new_rel_tuples and old_live_tuples.  It's not clear
if this is worth it just to save an argument to two functions?

-- 
Justin

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