On 04/03/2019 17:01, Mark Rotteveel wrote:
Interesting bit of information: in the wire protocol, the time zone id is encoded as a signed short, which results in for example Europe/Moscow (id = 65064 or 0xFE28) being encoded as bytes 0xFFFFFE28 due to sign-extension, in little-endian native, the buffer has 0x28FE0000. This suggests that native only uses two bytes plus two padding bytes.
It is only 16 bits ... It's restricted to minute accuracy on a fixed offset so is no use for storing mean time offsets which are in seconds, and the TZ identifiers are just an offset from the 1440 minute fixed offset.
At some point we will need to be able to handle REAL TZ offsets and pre-1970 data such as the initial switch from local mean time in seconds to the timezone managed time at the location. This current bodge is of little use outside handling current times and even then it fails if the TZ data changes between storing the offset time and reading it.
-- Lester Caine - G8HFL ----------------------------- Contact - https://lsces.co.uk/wiki/?page=contact L.S.Caine Electronic Services - https://lsces.co.uk EnquirySolve - https://enquirysolve.com/ Model Engineers Digital Workshop - https://medw.co.uk Rainbow Digital Media - https://rainbowdigitalmedia.co.uk Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel