Re: Have I found an interval arithmetic bug?
От | Bruce Momjian |
---|---|
Тема | Re: Have I found an interval arithmetic bug? |
Дата | |
Msg-id | 20210728151916.GA15440@momjian.us обсуждение исходный текст |
Ответ на | Re: Have I found an interval arithmetic bug? (Dean Rasheed <dean.a.rasheed@gmail.com>) |
Ответы |
Re: Have I found an interval arithmetic bug?
|
Список | pgsql-hackers |
On Wed, Jul 28, 2021 at 08:42:31AM +0100, Dean Rasheed wrote: > On Wed, 28 Jul 2021 at 00:08, John W Higgins <wishdev@gmail.com> wrote: > > > > It's nice to envision all forms of fancy calculations. But the fact is that > > > > '1.5 month'::interval * 2 != '3 month"::interval > > > > That's not exactly true. Even without the patch: > > SELECT '1.5 month'::interval * 2 AS product, > '3 month'::interval AS expected, > justify_interval('1.5 month'::interval * 2) AS justified_product, > '1.5 month'::interval * 2 = '3 month'::interval AS equal; > > product | expected | justified_product | equal > ----------------+----------+-------------------+------- > 2 mons 30 days | 3 mons | 3 mons | t > (1 row) > > So it's equal even without calling justify_interval() on the result. > > FWIW, I remain of the opinion that the interval literal code should > just spill down to lower units in all cases, just like the > multiplication and division code, so that the results are consistent > (barring floating point rounding errors) and explainable. Here is a more minimal patch that doesn't change the spill-down units at all, but merely documents it, and changes the spilldown to months to round instead of truncate. -- Bruce Momjian <bruce@momjian.us> https://momjian.us EDB https://enterprisedb.com If only the physical world exists, free will is an illusion.
Вложения
В списке pgsql-hackers по дате отправления: