]> git.g-eek.se Git - interimap.git/commit
interimap: fix handling of mod-sequence values greater or equal than 2 << 63.
authorGuilhem Moulin <guilhem@fripost.org>
Wed, 22 May 2019 19:36:21 +0000 (21:36 +0200)
committerGuilhem Moulin <guilhem@fripost.org>
Sun, 26 May 2019 22:07:30 +0000 (00:07 +0200)
commitb86a1141f7e71cb9244ba4c5609b554417b506bb
tree58e927addd82931d65e668358cae3dfbe103ccb3
parent06e459f3ccfb407d7587c470c37328df386b6ff6
interimap: fix handling of mod-sequence values greater or equal than 2 << 63.

SQLite processes every INTEGER values as a 8-byte signed integer, so we
need to manually do the conversion from/to uint64_t client-side if we
don't want to overflow or receive floats.

https://www.sqlite.org/datatype3.html#storage_classes_and_datatypes
http://jakegoulding.com/blog/2011/02/06/sqlite-64-bit-integers/

We could also do the same trick for local/remote UIDs, UIDVALITY and
UIDNEXT values to slim the database down at the expense of pre/post-
processing.  (Values of SQLite's INTEGER class are 1, 2, 3, 4, 6, or 8
bytes signed integers depending on the manitudes, so we could save some
space for values ≥2³¹.)  But that seems a little overkill.
Changelog
interimap