Re: avoid negating LONG_MIN in cash_out()

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: avoid negating LONG_MIN in cash_out()
Дата
Msg-id 23291.1660239613@sss.pgh.pa.us
обсуждение исходный текст
Ответ на avoid negating LONG_MIN in cash_out()  (Zhihong Yu <zyu@yugabyte.com>)
Ответы Re: avoid negating LONG_MIN in cash_out()  (Zhihong Yu <zyu@yugabyte.com>)
Список pgsql-hackers
Zhihong Yu <zyu@yugabyte.com> writes:
> In cash_out(), we have the following code:
>     if (value < 0)
>     {
>         /* make the amount positive for digit-reconstruction loop */
>         value = -value;

> The negation cannot be represented in type long when the value is LONG_MIN.

Possibly not good, but it seems like the subsequent loop works anyway:

regression=# select '-92233720368547758.08'::money;
            money            
-----------------------------
 -$92,233,720,368,547,758.08
(1 row)

Note that this exact test case appears in money.sql, so we know that
it works everywhere, not only my machine.

> It seems we can error out when LONG_MIN is detected instead of continuing
> with computation.

How could you think that that's an acceptable solution?  Once the
value is stored, we'd better be able to print it.

            regards, tom lane



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Zhihong Yu
Дата:
Сообщение: avoid negating LONG_MIN in cash_out()
Следующее
От: Zhihong Yu
Дата:
Сообщение: Re: avoid negating LONG_MIN in cash_out()