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);

Around line 194:
                    tm->tm_year += val;
                    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 <br...@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  <br...@momjian.us>        https://momjian.us
>   EDB                                      https://enterprisedb.com
>
>   If only the physical world exists, free will is an illusion.
>
>

Reply via email to