Bug 49798

GemStone/S 64 Bit

3.6.3, 3.6.2, 3.6.1, 3.6

3.6.4

Time comparison incorrect results when both values in same millisecond range

Starting in v3.6, Time supports microsecond precision.  However, Time comparison methods converted the operands to milliseconds. This resulted in incorrect return values in cases where the operand’s milliseconds were the same, but one value had additional digits of microsecond precision.

For comparisons in this range, #= would incorrectly return true; #> or #< would incorrectly return false (the other of #< or #>, or course, would correctly return false).  #<= and #>= always returned true.

Workaround

Edit the Time methods #< #= #> to use asMicroseconds rather than asMilliseconds.

To workaround without modifying the base, convert the values to microseconds for comparison, e.g. (Time fromMilliseconds: 49971817) asMicroseconds > (Time fromMicroseconds: 49971817708) asMicroseconds


Last updated: 3/24/22