Please see if the attached version works. regards, tom lane
Datum pg_size_pretty(PG_FUNCTION_ARGS) { int64 size = PG_GETARG_INT64(0); char buf[64]; int64 limit = 10 * 1024; int64 limit2 = limit * 2 - 1; if (size < limit) snprintf(buf, sizeof(buf), INT64_FORMAT " bytes", size); else { size >>= 9; /* keep one extra bit for rounding */ if (size < limit2) snprintf(buf, sizeof(buf), INT64_FORMAT " kB", (size + 1) / 2); else { size >>= 10; if (size < limit2) snprintf(buf, sizeof(buf), INT64_FORMAT " MB", (size + 1) / 2); else { size >>= 10; if (size < limit2) snprintf(buf, sizeof(buf), INT64_FORMAT " GB", (size + 1) / 2); else { size >>= 10; snprintf(buf, sizeof(buf), INT64_FORMAT " TB", (size + 1) / 2); } } } } PG_RETURN_TEXT_P(cstring_to_text(buf)); } -- Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-committers