I've noticed that EXPLAIN ANALYZE shows no information on exact/lossy
blocks for a bitmap heap scan when both the numbers of exact/lossy pages
retrieved by the node are zero. Such an example is shown below. I
think it would be better to suppress the 'Heap Blocks' line in that
case, based on the same idea of the 'Buffers' line. Patch attached.
postgres=# explain (analyze, verbose, buffers) select * from test where
id < 10;
QUERY PLAN
------------------------------------------------------------------------------------------------------------------
Bitmap Heap Scan on public.test (cost=4.29..8.31 rows=1 width=29)
(actual time=0.006..0.006 rows=0 loops=1)
Output: id, inserted, data
Recheck Cond: (test.id < 10)
Heap Blocks:
Buffers: shared hit=2
-> Bitmap Index Scan on test_pkey (cost=0.00..4.29 rows=1 width=0)
(actual time=0.003..0.003 rows=0 loops=1)
Index Cond: (test.id < 10)
Buffers: shared hit=2
Planning time: 0.118 ms
Execution time: 0.027 ms
(10 rows)
Thanks,
Best regards,
Etsuro Fujita
*** a/src/backend/commands/explain.c
--- b/src/backend/commands/explain.c
***************
*** 1937,1949 **** show_tidbitmap_info(BitmapHeapScanState *planstate, ExplainState *es)
}
else
{
! appendStringInfoSpaces(es->str, es->indent * 2);
! appendStringInfoString(es->str, "Heap Blocks:");
! if (planstate->exact_pages > 0)
! appendStringInfo(es->str, " exact=%ld", planstate->exact_pages);
! if (planstate->lossy_pages > 0)
! appendStringInfo(es->str, " lossy=%ld", planstate->lossy_pages);
! appendStringInfoChar(es->str, '\n');
}
}
--- 1937,1952 ----
}
else
{
! if (planstate->exact_pages > 0 || planstate->lossy_pages > 0)
! {
! appendStringInfoSpaces(es->str, es->indent * 2);
! appendStringInfoString(es->str, "Heap Blocks:");
! if (planstate->exact_pages > 0)
! appendStringInfo(es->str, " exact=%ld", planstate->exact_pages);
! if (planstate->lossy_pages > 0)
! appendStringInfo(es->str, " lossy=%ld", planstate->lossy_pages);
! appendStringInfoChar(es->str, '\n');
! }
}
}
--
Sent via pgsql-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers