On Fri, Jan 20, 2023 at 2:04 PM David Geier <geidav...@gmail.com> wrote: > > Hi hackers, > > EXPLAIN ANALYZE for parallel Bitmap Heap Scans currently only reports > the number of heap blocks processed by the leader. It's missing the > per-worker stats. The attached patch adds that functionality in the > spirit of e.g. Sort or Memoize. Here is a simple test case and the > EXPLAIN ANALYZE output with and without the patch: >
> With the patch: > > Gather (actual rows=99501 loops=1) > Workers Planned: 2 > Workers Launched: 2 > -> Parallel Bitmap Heap Scan on foo (actual rows=33167 loops=3) > Recheck Cond: ((col0 > 900) OR (col1 = 1)) > Heap Blocks: exact=98 > Worker 0: Heap Blocks: exact=171 lossy=0 > Worker 1: Heap Blocks: exact=172 lossy=0 else { + if (planstate->stats.exact_pages > 0) + appendStringInfo(es->str, " exact=%ld", planstate->stats.exact_pages); + if (planstate->stats.lossy_pages > 0) + appendStringInfo(es->str, " lossy=%ld", planstate->stats.lossy_pages); appendStringInfoChar(es->str, '\n'); } } .... + for (int n = 0; n < planstate->shared_info->num_workers; n++) + { .... + "Heap Blocks: exact="UINT64_FORMAT" lossy=" INT64_FORMAT"\n", + si->exact_pages, si->lossy_pages); Shouldn't we use the same format for reporting exact and lossy pages for the actual backend and the worker? I mean here for the backend you are showing lossy pages only if it is > 0 whereas for workers we are showing 0 lossy pages as well. -- Regards, Dilip Kumar EnterpriseDB: http://www.enterprisedb.com