Looks like you committed this before I got to it - moa is green, so I
guess it works.
Thanks.
On Thursday, April 28, 2011, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> 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));
> }
>
--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company