1. 19 Dec, 2018 5 commits
  2. 18 Dec, 2018 12 commits
  3. 17 Dec, 2018 4 commits
  4. 14 Dec, 2018 2 commits
  5. 04 Dec, 2018 1 commit
  6. 23 Oct, 2018 1 commit
  7. 17 Oct, 2018 1 commit
  8. 15 Oct, 2018 1 commit
  9. 09 Oct, 2018 2 commits
  10. 08 Oct, 2018 4 commits
  11. 02 Oct, 2018 3 commits
  12. 01 Oct, 2018 3 commits
    • Kirill Smelkov's avatar
      Merge branch 'master' into t · d3e124d1
      Kirill Smelkov authored
      * master:
        go/zodb: Don't truncate Tid time precision to 1µs
      d3e124d1
    • Kirill Smelkov's avatar
      go/zodb: Don't truncate Tid time precision to 1µs · 9112f21e
      Kirill Smelkov authored
      The format of tid assumes ~ ns precision, and it is only formatted to µs
      precision by default. So don't truncate TimeStamp value when computing
      it from Tid, and perform the µs-rounding only on formatting.
      
      The float numbers are not always exactly as in python. For example the
      following program
      
      	tidv = [
      	    0x0000000000000000,
      	    0x0285cbac258bf266,
      	    0x0285cbad27ae14e6,
      	    0x037969f722a53488,
      	    0x03b84285d71c57dd,
      	    0x03caa84275fc1166,
      	]
      
      	for tid in tidv:
      	    t = TimeStamp.TimeStamp(p64(tid))
      	    print '0x%016x %s %.9f\t%.9f' % (tid, t, t.timeTime(), t.second())
      
      prints:
      
      	0x0000000000000000 1900-01-01 00:00:00.000000 -2208988800.000000000     0.000000000
      	0x0285cbac258bf266 1979-01-03 21:00:08.800000 284245208.800000191       8.800000185
      	0x0285cbad27ae14e6 1979-01-03 21:01:09.300001 284245269.300001621       9.300001496	<-- ex here
      	0x037969f722a53488 2008-10-24 05:11:08.120000 1224825068.119999886      8.119999878
      	0x03b84285d71c57dd 2016-07-01 09:41:50.416574 1467366110.416574001      50.416573989
      	0x03caa84275fc1166 2018-10-01 16:34:27.652650 1538411667.652649879      27.652650112
      
      the difference is due to floating point operation ordering, because
      TimeStamp.timeTime() looses precision - e.g. for marked case:
      
      	In [8]: '%.10f' % (281566860.000000000 + 9.300001496)
      	Out[8]: '281566869.3000015020'
      
      We don't try to mimic float64 behaviour to Python exactly - because it is even
      different for PURE_PYTHON=y or C TimeStamp implementations. However we don't
      limit due to that our timestamp precision to only 1µs.
      
      In other words we keep on maintaining exact compatibility with Python on
      printing, but timestamp values itself are now ~ ns precision.
      9112f21e
    • Kirill Smelkov's avatar
      . · 74f0c47b
      Kirill Smelkov authored
      74f0c47b
  13. 30 Sep, 2018 1 commit