Re: Have I found an interval arithmetic bug?
От | Zhihong Yu |
---|---|
Тема | Re: Have I found an interval arithmetic bug? |
Дата | |
Msg-id | CALNJ-vTCW_Ot1jpz+o-HXYRso1XwOZHmOMYSD6AeWqObszFtNw@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Have I found an interval arithmetic bug? (Bruce Momjian <bruce@momjian.us>) |
Ответы |
Re: Have I found an interval arithmetic bug?
|
Список | pgsql-hackers |
Bruce:
In src/interfaces/ecpg/pgtypeslib/interval.c, how about the following places ?
Around line 158:
case 'Y':
tm->tm_year += val;
tm->tm_mon += (fval * MONTHS_PER_YEAR);
tm->tm_year += val;
tm->tm_mon += (fval * MONTHS_PER_YEAR);
Around line 194:
tm->tm_year += val;
tm->tm_mon += (fval * MONTHS_PER_YEAR);
tm->tm_mon += (fval * MONTHS_PER_YEAR);
Is rint() needed for these two cases ?
Cheers
On Fri, Apr 2, 2021 at 7:21 PM Bruce Momjian <bruce@momjian.us> wrote:
On Fri, Apr 2, 2021 at 07:06:08PM -0700, Zhihong Yu wrote:
> Hi,
> The mix of interval and comparison with float is not easy to interpret. See the
> following (I got 0.0833 since the result for interval '0.3 years' + interval
> '0.4 years' - ... query was 1 month and 1/12 ~= 0.0833).
>
> yugabyte=# select 0.3 * '1 year'::interval + 0.4 * '1 year'::interval - 0.7 *
> '1 year'::interval = '0.0833 year'::interval;
> ?column?
> ----------
> f
>
> As long as Bruce's patch makes improvements over the current behavior, I think
> that's fine.
I wish I could figure out how to improve it any futher. What is odd is
that I have never seen this reported as a problem before. I plan to
apply this early next week for PG 14.
--
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 по дате отправления: