public inbox for [email protected]  
help / color / mirror / Atom feed
From: Kyotaro Horiguchi <[email protected]>
Subject: [PATCH v6 3/4] Expose byte_size_pretty in dbsize.c
Date: Tue, 6 Sep 2022 11:42:10 +0900

---
 src/backend/utils/adt/dbsize.c | 25 ++++++++++++++++---------
 src/include/utils/dbsize.h     | 16 ++++++++++++++++
 2 files changed, 32 insertions(+), 9 deletions(-)
 create mode 100644 src/include/utils/dbsize.h

diff --git a/src/backend/utils/adt/dbsize.c b/src/backend/utils/adt/dbsize.c
index 34efa121b4..abe2c41db4 100644
--- a/src/backend/utils/adt/dbsize.c
+++ b/src/backend/utils/adt/dbsize.c
@@ -25,6 +25,7 @@
 #include "storage/fd.h"
 #include "utils/acl.h"
 #include "utils/builtins.h"
+#include "utils/dbsize.h"
 #include "utils/numeric.h"
 #include "utils/rel.h"
 #include "utils/relfilenumbermap.h"
@@ -549,14 +550,9 @@ pg_total_relation_size(PG_FUNCTION_ARGS)
 	PG_RETURN_INT64(size);
 }
 
-/*
- * formatting with size units
- */
-Datum
-pg_size_pretty(PG_FUNCTION_ARGS)
+void
+byte_size_pretty(char *dest, size_t destlen, int64 size)
 {
-	int64		size = PG_GETARG_INT64(0);
-	char		buf[64];
 	const struct size_pretty_unit *unit;
 
 	for (unit = size_pretty_units; unit->name != NULL; unit++)
@@ -569,8 +565,8 @@ pg_size_pretty(PG_FUNCTION_ARGS)
 			if (unit->round)
 				size = half_rounded(size);
 
-			snprintf(buf, sizeof(buf), INT64_FORMAT " %s", size, unit->name);
-			break;
+			snprintf(dest, destlen, INT64_FORMAT " %s", size, unit->name);
+			return;
 		}
 
 		/*
@@ -586,7 +582,18 @@ pg_size_pretty(PG_FUNCTION_ARGS)
 				+ (unit->round == true));
 		size /= ((int64) 1) << bits;
 	}
+}
 
+/*
+ * formatting with size units
+ */
+Datum
+pg_size_pretty(PG_FUNCTION_ARGS)
+{
+	int64		size = PG_GETARG_INT64(0);
+	char		buf[64];
+
+	byte_size_pretty(buf, sizeof(buf), size);
 	PG_RETURN_TEXT_P(cstring_to_text(buf));
 }
 
diff --git a/src/include/utils/dbsize.h b/src/include/utils/dbsize.h
new file mode 100644
index 0000000000..6bff9d4d6a
--- /dev/null
+++ b/src/include/utils/dbsize.h
@@ -0,0 +1,16 @@
+/*-----------------------------------------------------------------------
+ * dbsize.h
+ *
+ *	 Portions Copyright (c) 1999-2022, PostgreSQL Global Development Group
+ *
+ * src/include/utils/dbsize.h
+ *
+ *-----------------------------------------------------------------------
+ */
+
+#ifndef _DBSIZE_H_
+#define _DBSIZE_H_
+
+extern void byte_size_pretty(char *dest, size_t destlen, int64 size);
+
+#endif							/* _DBSIZE_H_ */
-- 
2.31.1


----Next_Part(Tue_Sep__6_14_53_36_2022_094)--
Content-Type: Text/X-Patch; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
 filename="v6-0004-Change-error-messages-to-show-the-difference-to-t.patch"



view thread (4+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected]
  Subject: Re: [PATCH v6 3/4] Expose byte_size_pretty in dbsize.c
  In-Reply-To: <no-message-id-1858545@localhost>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox