RE: Parallel Bitmap Heap Scan reports per-worker stats in EXPLAIN ANALYZE

masahiro.ikeda@nttdata.com

From: <Masahiro.Ikeda@nttdata.com>
To: <lena.ribackina@yandex.ru>, <donghanglin@gmail.com>
Cc: <geidav.pg@gmail.com>, <melanieplageman@gmail.com>, <tomas.vondra@enterprisedb.com>, <dilipbalaut@gmail.com>, <pgsql-hackers@lists.postgresql.org>, <hlinnaka@iki.fi>, <Masao.Fujii@nttdata.com>
Date: 2024-06-26T10:27:09Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Show Parallel Bitmap Heap Scan worker stats in EXPLAIN ANALYZE

  2. Widen lossy and exact page counters for Bitmap Heap Scan

  3. Remove redundant snapshot copying from parallel leader to workers

Hi,

Thanks for working it! I'm interested in this feature, so I'd like to participate
in the patch review. Though I've just started looking at the patch, I have two
comments about the v6 patch. (And I want to confirm the thread active.)


1) Unify the print format of leader and worker

In show_tidbitmap_info(), the number of exact/loosy blocks of the leader and
workers are printed. I think the printed format should be same. Currently, the
leader does not print the blocks of exact/lossy with a value of 0, but the workers
could even if it is 0.

IMHO, it's better to print both exact/lossy blocks if at least one of the numbers of
exact/lossy blocks is greater than 0. After all, the print logic is redundant for leader
and workers, but I thought it would be better to make it a common function.


2) Move es->workers_state check

In show_tidbitmap_info(), ExplainOpenWorker() and ExplainCloseWorker() are called
after checking es->worker_state is not NULL. However, es->workers_state seem to be
able to be NULL only for the Gather node (I see ExplainPrintPlan()). Also, reading the
comments, there is a description that each worker information needs to be hidden when
printing the plan.

Even if es->workers_state becomes NULL in BitmapHeapScan node in the future, I think
that workers' information(Heap Blocks) should not be printed. Therefore, I think
es->workers_state check should be move to the place of "if (planstate->pstate != NULL)"
like ExplainNode(), doesn't it?

IIUC, we need to correct show_sort_info() and so on too…

Regards,
--
Masahiro Ikeda
NTT DATA CORPORATION