• T
    Fix edge-case behavior of pg_next_dst_boundary(). · 17fc5db7
    Tom Lane 提交于
    Due to rather sloppy thinking (on my part, I'm afraid) about the
    appropriate behavior for boundary conditions, pg_next_dst_boundary() gave
    undefined, platform-dependent results when the input time is exactly the
    last recorded DST transition time for the specified time zone, as a result
    of fetching values one past the end of its data arrays.
    
    Change its specification to be that it always finds the next DST boundary
    *after* the input time, and adjust code to match that.  The sole existing
    caller, DetermineTimeZoneOffset, doesn't actually care about this
    distinction, since it always uses a probe time earlier than the instant
    that it does care about.  So it seemed best to me to change the API to make
    the result=1 and result=0 cases more consistent, specifically to ensure
    that the "before" outputs always describe the state at the given time,
    rather than hacking the code to obey the previous API comment exactly.
    
    Per bug #6605 from Sergey Burladyan.  Back-patch to all supported versions.
    17fc5db7
localtime.c 26.1 KB