• Tom Lane's avatar
    Fix time_part and timetz_part (ie, EXTRACT() for those datatypes) to · 78aef14c
    Tom Lane authored
    include a fractional part in the output for MILLISECOND and SECOND cases,
    rather than truncating the source value.  This is what the float-timestamp
    code has always done, and it was clearly the code author's intent to do
    the same for integer timestamps, but he forgot about integer division in C.
    The other datatypes supported by EXTRACT() already do this correctly.
    
    Backpatch to 8.4, so that the default (integer) behavior of that branch will
    match the default (float) behavior of older branches.  Arguably we should
    patch further back, but it's possible that applications are expecting the
    broken behavior in older branches.  8.4 is new enough that expectations
    shouldn't be too settled.
    
    Per report from Greg Stark.
    78aef14c
date.c 56.3 KB