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

Reply via email to