• T
    Repair two recently reported problems: · 3ec826f9
    Thomas G. Lockhart 提交于
    1) datetime_pl_span() added the seconds field before adding the months
     field.  This lead to erroneous results for e.g.
       select datetime '1999-11-30' + timespan '1 mon - 1 sec';
     Reverse the order of operations to add months first.
    2) tm2timespan() did all intermediate math as integer, converting to double
     at the very end. This resulted in hidden overflows when given very large
     integer days, hours, etc. For example,
       select '74565 days'::timespan;
     produced the wrong result. Change code to ensure that doubles are used
     for intermediate calculations.
    Thanks to Olivier PRENANT <ohp@pyrenet.fr> and
     Tulassay Zsolt <zsolt@tek.bke.hu> for problem reports and to Tom Lane for
     accurate analyses.
    3ec826f9
dt.c 89.4 KB