]> granicus.if.org Git - postgresql/commitdiff
Prevent bitmap heap scans from showing unnecessary block info in EXPLAIN ANALYZE.
authorFujii Masao <fujii@postgresql.org>
Mon, 14 Jul 2014 11:40:14 +0000 (20:40 +0900)
committerFujii Masao <fujii@postgresql.org>
Mon, 14 Jul 2014 11:42:53 +0000 (20:42 +0900)
EXPLAIN ANALYZE shows the information of the numbers of exact/lossy blocks which
bitmap heap scan processes. But, previously, when those numbers were both zero,
it displayed only the prefix "Heap Blocks:" in TEXT output format. This is strange
and would confuse the users. So this commit suppresses such unnecessary information.

Backpatch to 9.4 where EXPLAIN ANALYZE was changed so that such information was
displayed.

Etsuro Fujita

src/backend/commands/explain.c

index 0d9663cd8db19500fb386b80d90e51663ab1cc0e..781a736115a41103468de9bcf8b02b600ee872cb 100644 (file)
@@ -1937,13 +1937,16 @@ 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');
+               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');
+               }
        }
 }