No exact/lossy block information in EXPLAIN ANALYZE for a bitmap heap scan
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
Attachments:
explain-bitmapscan.patchtext/x-diff; name=explain-bitmapscan.patchDownload
*** 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');
! }
}
}
On Fri, Jul 11, 2014 at 5:45 PM, Etsuro Fujita
<fujita.etsuro@lab.ntt.co.jp> wrote:
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.
The patch looks good to me. Barring any objection, I will commit this both
in HEAD and 9.4.
Regards,
--
Fujii Masao
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Fri, Jul 11, 2014 at 7:21 PM, Fujii Masao <masao.fujii@gmail.com> wrote:
On Fri, Jul 11, 2014 at 5:45 PM, Etsuro Fujita
<fujita.etsuro@lab.ntt.co.jp> wrote: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.The patch looks good to me. Barring any objection, I will commit this both
in HEAD and 9.4.
Committed!
Regards,
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
(2014/07/14 21:01), Fujii Masao wrote:
On Fri, Jul 11, 2014 at 7:21 PM, Fujii Masao <masao.fujii@gmail.com> wrote:
On Fri, Jul 11, 2014 at 5:45 PM, Etsuro Fujita
<fujita.etsuro@lab.ntt.co.jp> wrote: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.The patch looks good to me. Barring any objection, I will commit this both
in HEAD and 9.4.Committed!
Thanks!
I have another proposal for show_tidbitmap_info(). That is about the
following comment for show_tidbitmap_info():
/*
* If it's EXPLAIN ANALYZE, show exact/lossy pages for a
BitmapHeapScan node
*/
ISTM that the words "If it's EXPLAIN ANALYZE" are unnecessary. As the
function is called in EXPLAIN ANALYZE, so the words are not wrong, but
it doesn't seem to me suitable for the comment for the function itself.
Patch attached.
Thanks,
Best regards,
Etsuro Fujita
Attachments:
explain-bitmapscan-comment.patchtext/x-diff; name=explain-bitmapscan-comment.patchDownload
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c
index 781a736..07da169 100644
--- a/src/backend/commands/explain.c
+++ b/src/backend/commands/explain.c
@@ -1925,7 +1925,7 @@ show_hash_info(HashState *hashstate, ExplainState *es)
}
/*
- * If it's EXPLAIN ANALYZE, show exact/lossy pages for a BitmapHeapScan node
+ * Show exact/lossy pages for a BitmapHeapScan node
*/
static void
show_tidbitmap_info(BitmapHeapScanState *planstate, ExplainState *es)