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 (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers