Re: pgsql: Fix numeric_mul() overflow due to too many digits after decimal
От | Tom Lane |
---|---|
Тема | Re: pgsql: Fix numeric_mul() overflow due to too many digits after decimal |
Дата | |
Msg-id | 2387728.1625929272@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | pgsql: Fix numeric_mul() overflow due to too many digits after decimal (Dean Rasheed <dean.a.rasheed@gmail.com>) |
Ответы |
Re: pgsql: Fix numeric_mul() overflow due to too many digits after decimal
|
Список | pgsql-committers |
Dean Rasheed <dean.a.rasheed@gmail.com> writes: > This fixes an overflow error when using the numeric * operator if the > result has more than 16383 digits after the decimal point by rounding > the result. Overflow errors should only occur if the result has too > many digits *before* the decimal point. I think this needs a bit more thought. Before, a case like select 1e-16000 * 1e-16000; produced ERROR: value overflows numeric format Now you get an exact zero (with a lot of trailing zeroes, but still it's just zero). Doesn't that represent catastrophic loss of precision? In general, I'm disturbed that we just threw away the previous promise that numeric multiplication results were exact. That seems like a pretty fundamental property --- which is stated in so many words in the manual, btw --- and I'm not sure I want to give it up. regards, tom lane
В списке pgsql-committers по дате отправления: