Re: [BUGS] BUG #12989: pg_size_pretty with negative values

Поиск
Список
Период
Сортировка
Искать
От
Adrian.Vondendriesch
Тема
Re: [BUGS] BUG #12989: pg_size_pretty with negative values
Дата
Msg-id
55FEA38F.40301@credativ.de
Ответ на
Список
Дерево обсуждения
Re: [BUGS] BUG #12989: pg_size_pretty with negative values "Adrian.Vondendriesch" <Adrian.Vondendriesch@credativ.de>
Re: [BUGS] BUG #12989: pg_size_pretty with negative values Julien Rouhaud <julien.rouhaud@dalibo.com>
Re: [BUGS] BUG #12989: pg_size_pretty with negative values Robert Haas <robertmhaas@gmail.com>
Re: [BUGS] BUG #12989: pg_size_pretty with negative values Julien Rouhaud <julien.rouhaud@dalibo.com>
Re: [BUGS] BUG #12989: pg_size_pretty with negative values "Adrian.Vondendriesch" <Adrian.Vondendriesch@credativ.de>
Re: [BUGS] BUG #12989: pg_size_pretty with negative values Robert Haas <robertmhaas@gmail.com>
Re: [BUGS] BUG #12989: pg_size_pretty with negative values Adrian Vondendriesch <adrian.vondendriesch@credativ.de>
Re: [BUGS] BUG #12989: pg_size_pretty with negative values Robert Haas <robertmhaas@gmail.com>
Hi all,

Am 06.04.2015 um 20:52 schrieb Tom Lane:
> "David G. Johnston"  writes:
>> I'll let a hacker determine whether this is a bug or a feature request
>> though it is a POLA violation in either case.
> 
> I'd say it's a feature request --- a perfectly reasonable one, but I doubt
> we'd alter the behavior of the function in the back branches.

I was also wondering about the described behaviour. IMO pg_size_pretty
should handle negative values the same way as positive values are handled.

I've attached a patch which implements the requested behaviour. The
patch applies clean to HEAD (currently 85eda7e92).

AFAICS the documentation doesn't say anything about pg_size_pretty and
negative values. So, I didn't touch the documentation. If this is a
oversight by me or should be documented after all, I will provide a
additional documentation patch.

Before the patch:

> SELECT pg_size_pretty(size), pg_size_pretty(-1 * size) FROM (SELECT 100000000000000::bigint) foo(size);
>  pg_size_pretty |     pg_size_pretty     
> ----------------+------------------------
>  91 TB          | -100000000000000 bytes
> (1 row)

> SELECT pg_size_pretty(size), pg_size_pretty(-1 * size) FROM (SELECT 100000000000000::numeric) foo(size);
>  pg_size_pretty |     pg_size_pretty     
> ----------------+------------------------
>  91 TB          | -100000000000000 bytes
> (1 row)

After the patch:

> SELECT pg_size_pretty(size), pg_size_pretty(-1 * size) FROM (SELECT 100000000000000::bigint) foo(size);
>  pg_size_pretty | pg_size_pretty 
> ----------------+----------------
>  91 TB          | -91 TB
> (1 row)

> SELECT pg_size_pretty(size), pg_size_pretty(-1 * size) FROM (SELECT 100000000000000::numeric) foo(size);
>  pg_size_pretty | pg_size_pretty 
> ----------------+----------------
>  91 TB          | -91 TB
> (1 row)


The patch contains two tests (pg_size_pretty_bigint and
pg_size_pretty_numeric), to verify that positive and negative values
return the same result (except sign).

Greetings,

 - Adrian
В списке pgsql-hackers по дате отправления
От: Pavel Stehule
Дата:
От: Euler Taveira
Дата:
FAQ