nocfbot-0001-Emit-I-O-group-always-for-non-text-formats.patch

application/octet-stream

Filename: nocfbot-0001-Emit-I-O-group-always-for-non-text-formats.patch
Type: application/octet-stream
Part: 0
Message: Re: EXPLAIN: showing ReadStream / prefetch stats

Patch

Same data as JSON: GET /api/v1/attachments/:id/patch the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes. API reference →
Format: format-patch
Series: patch 0001
Subject: Emit I/O group always for non-text formats
File+
src/backend/commands/explain.c 8 11
From 24785402b25337a30a91ce95889f1dd61e4b84c7 Mon Sep 17 00:00:00 2001
From: Lukas Fittl <lukas@fittl.com>
Date: Thu, 19 Mar 2026 08:31:34 -0700
Subject: [PATCH 1/2] Emit I/O group always for non-text formats

---
 src/backend/commands/explain.c | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c
index ee32fbafa9d..28da983ad29 100644
--- a/src/backend/commands/explain.c
+++ b/src/backend/commands/explain.c
@@ -4041,19 +4041,16 @@ print_io_usage(ExplainState *es, IOStats *stats)
 
 			ExplainCloseGroup("Prefetch", "Prefetch", true, es);
 
-			if (stats->io_count > 0)
-			{
-				ExplainOpenGroup("I/O", "I/O", true, es);
+			ExplainOpenGroup("I/O", "I/O", true, es);
 
-				ExplainPropertyUInteger("Stalls", NULL,
-										stats->stall_count, es);
-				ExplainPropertyFloat("Average IO Size", NULL,
-									 (stats->io_nblocks * 1.0 / stats->io_count), 3, es);
-				ExplainPropertyFloat("Average IOs In Progress", NULL,
-									 (stats->io_in_progress * 1.0 / stats->io_count), 3, es);
+			ExplainPropertyUInteger("Stalls", NULL,
+									stats->stall_count, es);
+			ExplainPropertyFloat("Average IO Size", NULL,
+								 stats->io_count > 0 ? (stats->io_nblocks * 1.0 / stats->io_count) : 0, 3, es);
+			ExplainPropertyFloat("Average IOs In Progress", NULL,
+								 stats->io_count > 0 ? (stats->io_in_progress * 1.0 / stats->io_count) : 0, 3, es);
 
-				ExplainCloseGroup("I/O", "I/O", true, es);
-			}
+			ExplainCloseGroup("I/O", "I/O", true, es);
 		}
 	}
 }
-- 
2.47.1